#php #codeception
Использую codeception. В приемочных тестах на API часто создаются и удаляются данные, но требуется, чтобы с каждым новым тестом БД находилась в некотором определенном состоянии. Накатывать фикстуры заново - затратно. Использовать транзакции невозможно (только в unit тестах это реально). Как можно обеспечить всегда некоторое "стандартное" состояние БД на момент запуска каждого теста?
Ответы
Ответ 1
Серебряной пули нет. Если накатывание фикстур уже заоптимизировано напрочь, и саму фикстуру уже не уменьшить, то вариантов, по сути, немного: писать тесты так, чтобы они работали на любой базе с валидным состоянием. Концептуально это правильнее, т.к. позволяет тестировать систему не только в "исконно чистом виде". Особенно если тесты будут в произвольном порядке (обычно хватает рандомизации очередности разных тест-кейсов). Правда писать такие тесты сложее. Зато ошибок вылавливается больше. "доготавливать" базу в самом тесте. Чистить из базы используемые в тесте модели, обнулять счетчики, заново загружать справочники и т.д. генерировать базы с фикстурами еще до тестов, а непосредственно перед тестами только накатывать миграции под текущую версию
Комментариев нет:
Отправить комментарий