Unit testing FakeItEasy
I'm currently working on a project and I want to implement Unit tests for certain cases.
After some research I decided to use FakeItEasy, but honestly I have NO clue what and how I am supposed to write out certain cases. The following example is some test I at least managed to write without having any errors and having succeeded after running the test. Though I should get a list of Dossiers back, I checked the result using Debugging and it should return a full list. Is there anyone that could briefly help me figure out how this "mocking" works and how I should write out this case?
2 Replies
you're not testing anything there
think about what that test is actually doing
you're making a mock of a repo, then just calling that mock
it's just testing the mock
I personally would recommend you lean towards integration tests, leaving mocks for external services that cannot realistically be part of your tests
eg in a Discord bot you might mock the Discord API, but everything else (database, etc.) is real in some way
in the case of databases, there are two main options
- if you're using sqlite, just use it's in-memory mode
- otherwise (for eg postgres, ms sql server) use https://dotnet.testcontainers.org/
if you're using EF, do not use it's inmemory database (not to be confused with sqlite's inmemory mode), as it's lacking extremely basic features like transactions, and gets basically no development afaict
Alright thank you for the feedback!