@RMate

Как правильно писать глубокие интеграционные тесты?

Всем привет!
Мне необходимо проверить работу контроллера (создание записи, изменение, удаление).
Однако сущность с которой работает контроллер зависит от другой сущности, а та в свою очередь зависит от третьей сущности (допустим, категория -> продукт -> комментарий). Комментарий не может быть создан пока не создан продукт, продукт не может быть создан пока не создана категория.

Что делать в таком случае?
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
Эти тесты функциональные строят обычно на фикстурах:
- загружается состояние системы (например БД) до необходимого, например загружается категория КА и товар ТА
- поднимается приложение или достаточное число сервисов для теста
- проводится тест (например добавляется товар дублер товар ТА и система должна ругнуться или удаляется товар, которого нет, например товар ТБ)

И так для каждого кейса — для него подгоняется состояние. Необходимо, чтобы тест все же должен быть относительно изолированным. Для некоторых тестов состояние одно и инструкции его поднятия будут одинаковы. Кроме того это быстро и проще.
Для скорости тестов обычно берут in memory БД — это еще одна важная причина использовать сложные хорошие ORM, которые могут работать и с примитивными базами в памяти и с полноценными, отделяя код и работу с данными. Разница во времени по сравнению с реальным БД сильно выше.

Вообще эти тесты сложные и потому их число как правило сильно меньше простых юнитов... Кроме того иногда уже имеет смысл делать это через приемочные (браузерные) тесты
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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