Вопрос такой. Какие подходы вы используете при тестирование бэкенд api сервисов?
Мы сначала использовали подход тестирования с живыми зависимостями (базой).
Затем перешли на тесты с моками результатов от БД.
Но оба эти подхода имеют как плюсы так и минусы.
1.Тестироване без мока БД.
минусы:
- нужно делать пре и пост манипуляции с данными (добавлять, потом обязательно чистить )
- тратит больше ресурсов
- нужно более сложное окружение для теста (поднятая база)
- нужна желательно отдельная базы
- желательны пресеты и фикстуры данных
плюсы:
- тестирование максимально приближено к реальному поведению
- имеет смысл проверять результат на совпадение с ожидаемой структурой (поля, типы данных и т.д. )
потому что тело тестируемого метода самое отвичает за его получение и формирование
- не надо заморачиваться с предварительными моками данных
2.Тестироване на мока данных из БД.
минусы:
- сами моки, это капец не тревиальная задача,
иногда код для подготовки мока занимает 30+ строк, да и назвать его простым тоже нельзя
- сильно падает смысл проверки формата результата работы сервиса, т.к. структура мока напрямую влияет на выходной результат
(например тест на проверку не улетает ли на ружу хэш пароли, при получение инфа о пользователе)
- тестирование НЕ максимально приближено к реальному поведению
плюсы:
- тесты отрабатывают быстрее
- никаких зависимостей
- простая среда исполнения