Тестирование

Testing EF Core Applications
https://docs.microsoft.com/en-us/ef/core/testing/ 
 
Mocking EF core dbcontext and dbset
https://stackoverflow.com/questions/54219742/mocking-ef-core-dbcontext-and-dbset
 
romantitov/MockQueryable
https://github.com/romantitov/MockQueryable
 
MichalJankowskii/Moq.EntityFrameworkCore
https://github.com/MichalJankowskii/Moq.EntityFrameworkCore
 
EF Core In-Memory Database Provider
https://docs.microsoft.com/en-us/ef/core/providers/in-memory/?tabs=dotnet-core-cli
 
Real db factory and pool

В некоторых случаях допускаю использование следующего механизма.

На машине, исполняющей тесты, локально установлена БД.
Реализован модуль генерации пула строк подключений при старте теста.
Внутри кода теста доступен провайдер БД, который может предоставлять БД из пула.
Сами БД создаются в начале выполнения блока тестов и очищаются в конце каждого теста (либо пересозданием БД медленно, либо какой-то механизм гарантии отчистки всех созданных объектов).
Пул БД позволит выполнять тесты параллельно и независимо друг от друга, ограничивая степень параллелизма параметрами пула.

Возможно даже выделенный сервис для аренды БД из пула для совместного использования разными запусками тестов.
(Например возможность использовать выделенный сервер и сервис для CI / CD и возможность поднять локально для удобства отладки).
(При желании можно прикрутить Docker и динамически управлять контейнерами).

Отдельный вопрос инициализации и наполнения БД.

UPD1: узнал про существование такой штуки: Testcontainers

 

Теги: