Страницы

Поиск по вопросам

понедельник, 4 февраля 2019 г.

Как писать unit тесты для DAL?

К примеру есть классы с такими extension методами:
IQueryable ToViewDto(this IQueryable query)
Или элементарный Linq запрос (в другом классе):
_repository.Query .Where(x => x.Id == id) .Where(x=>x.Type == UserType.Oldfag) .ToViewDto() .ToList();
Каждый раз в тестовом методе заполнять список с UserEntity делать AsQueryable() уж очень долго.
Как вариант рассматриваю сделать какой нибудь набор данных всех сущностей с разными свойствами. Но это тоже долго и усложняет чтение тестового кода, т.к. придется находить место где сущности перечислены, искать нужную с нужными параметрами и только потом сравнивать его свойства.
Подскажите как правильно поступить? Или я иду в направлении интеграционных тестов и DAL вообще не стоит трогать?


Ответ

Каждый раз в тестовом методе заполнять список с UserEntity делать AsQueryable() уж очень долго.
Именно так и надо делать. В результате вы получите юнит-тесты в чистом виде, без сторонней зависимости в виде БД. И это не должно быть долго, поскольку набор входных данных должен получаться небольшой, если тестовые методы у вас достаточно хорошо разбиты по соответствуют отдельным кейсам.
Или я иду в направлении интеграционных тестов и DAL вообще не стоит трогать?
Тесты всякие нужны, тесты всякие важны. И на DAL в т.ч. Просто если у вас нет в БД никакой логики, то тогда вы сможете замокать ее, и получить чистые юнит-тесты. Если же в БД есть логика, то придется делать и интеграционные тесты (тут, впрочем, можно подискутировать на тему того, стоит ли тестировать БДшный код из тестов приложения или иметь отдельные тесты для процедур).

Комментариев нет:

Отправить комментарий