@Venesuella
BlackJack и ...

Как тестировать DAL слой с помощью Unit тестов?

Здравствуйте! Подскажите как лучше протестировать слой DAL, есть слой DAL, и проект DAL.Test содержит тесты для него, в слой DAL добавлен Entity Framework, нужно ли добавлять Entity Framework к проекту DAL.Test, или же DAL.Test ничего не должен знать про Entity Framework и должен только вызывать методы из DAL? А если не добавлять Entity, то тогда как протестировать репозитории, которые находятся в DAL
  • Вопрос задан
  • 1032 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Нужно замокать DbContext. Чтобы отвязаться от EF и его DbContext, нужно построить архитектуру так, чтобы полностью скрыть DbContext от репозитория под своей абстракцией. Эту абстракцию и мочить. И тестировать репозитории на фейковом поставщике данных.
Ответ написан
RyzhovAlexandr
@RyzhovAlexandr
люблю .NET, интересуюсь также Java, BigData
Для тестирования DAL, если он полностью использует для сохранения и доступа к данным только методы EntityFramework, можно не использовать реальную базу, а воспользоваться Effort. Но для этого необходимо создать тестовый DbContext, который бы использовал эту библиотеку.
DAL.Test должен референсить все, что необходимо для создания реального тестируемого класса (например репозитория) и фейка для DataContext, который бы внутри себя использовал Effort.

Если же для работы с БД репозиторий использует ExecuteQuery, то Effort - не подойдет, придется использовать реальную БД - но это уже можно сказать интеграционные тесты. В них есть плюс - что они более приближены к реальным сценариям, но минус - более тяжелы в поддержке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы