I am in a process of writing unit tests for a project that uses EntityFramework Core and according to the docs I can use SQLite in-memory mode
or The InMemory provider
to approximate the database context.
The docs states that the SQLite in-memory mode
behaves like a relational database and that The InMemory provider
does not always behave like a relational database.
As far as I understand the SQLite mode sounds better because it behaves like relational database while the InMemory provider does not, but I guess there is other aspects to consider otherwise noone will use The InMemory provider
which sounds a lot worse.
Is there other pros and cons to each approach I should consider before I choose which tool to use?
If your sole purpose is writing Unit Tests, look closely at the boiler plate code needed to create the tests, that could impact your deadlines... I would go with the option that makes me type less code! (The InMemory provider
looks simpler).
Look at the samples and decide:
...and of course your project will have Integration Tests, on those you will connect to the real database and do additional checks. That's why for the unit tests my main concern is writing time, not so much how the mock DB behaves