Задать вопрос
@bighoc
php/javascript developer

Как сделать что бы некоторые таблицы перед стартом тестов очищались в Codecption (yii)?

Пишу юнит тесты, приходиться в начале тестМетода писать чтото вроде UserSubscription::deleteAll();
Иначе после предидущих тестов остаються старые данные. Как можно исправить ?
  • Вопрос задан
  • 277 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
ppokrovsky
@ppokrovsky
Мое личное мнение - нужно по возможности избегать создания тестовых данных в базе для юнит-тестов и все, что можно сделать заглушками - делать заглушками.
Во-первых, это сильно облегчает и ускоряет тесты;
Во-вторых, цель юнит-тестирования - проверка логики работы метода. В данном случае операции чтения-записи в БД не относятся к функционалу метода, а относятся к функционалу фреймворка. Т.е. такие юнит-тесты по факту тестируют методы фреймворка, в чем как правило нет необходимости.
В-третьих, методы должны тестироваться изолированно. Наличие тестовых данных в БД для теста создает связанность.

Для меня юнит-тесты, в которых много операций с БД, это запашок.

Но если так уж хочется - то можно либо в tearDown вызывать очистку всех созданных данных через deleteAll(), либо пользоваться фикстурами (см ActiveFixture), либо каждый раз загружать дамп базы (см unit.suite.yml)
Ответ написан
Комментировать
Marcuzy
@Marcuzy
php разработчик
Читаем внимательно codeception.com/docs/modules/Db
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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