I got pretty experienced with testing controllers, my question here is though, aren’t we supposed to test the data context as well, and how ? I mean, there are a lot of relationships and constraints coming from the DB that simply testing controllers does not cover.
On the other hand, testing against the DB is not considered a good practice – what then ? Simply testing without db.SubmitChanges() or what ?
When it comes to testing your repositories, the typical approach is to create an in-memory database that can be torn down and rebuilt for each time you run your tests. By using this approach, you will always know what the data will look like so you can more easily make assertions against it. In addition, you won’t be touching your real data, which is always a positive. Sqlite is the most popular one out there in the .NET space for this.