Должны ли мои интеграционные тесты повторно использовать библиотеку постоянства для доступа к БД?

У меня есть реализация DDD.IdentityAccess.Domain, которая содержит абстракцию IUserRepository. Существует еще одна dll -> DDD.IdentityAccess.Persistence.Sql, которая содержит реализацию абстракции IUserRepository. Теперь я хочу полностью протестировать свой IdentityAccess -> Api -> DomainLogic -> База данных. Давайте возьмем сценарий использования CreateUser. Я вызываю "CreateUser" через мой httpClient, затем я хочу запросить db, чтобы проверить, действительно ли пользователь добавлен в db. У меня нет операции 'user / id' для моего остальных API, поэтому единственный вариант - использовать DDD.IdentityAccess.Persistence.Sql, но это приведет к зависимости от DDD.IdentityAccess.Domain. Должен ли я повторно использовать эту DLL или создать другой DAL, который не связан с доменом?

1 ответ

Решение

Это связано не столько с дизайном, управляемым доменом, сколько с организацией вашей тестовой установки.

Интеграционные тесты стоят дорого, но могут принести огромную пользу, показав, что несколько компонентов работают вместе, как и ожидалось. Это компромисс.

Тем не менее, если я вас правильно понимаю, ваш вопрос заключается в том, стоит ли вам высмеивать объекты (ы) доступа к данным sql или идти вниз до базы данных, выполняя те же операторы sql.

Здесь нет правильного или неправильного ответа. Если основное внимание уделяется тестированию бизнес-логики, тогда сконцентрируйтесь на тестировании домена и макете уровня доступа к базе данных.

Если основное внимание уделяется проверке того, что простая операция сохранения работает сверху донизу, то не издевайтесь. (Но используйте тестовую базу данных, конечно.)