Страницы

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

пятница, 24 января 2020 г.

Как поддерживать целостность БД в приемочных тестах?

#php #codeception


Использую codeception. В приемочных тестах на API часто создаются и удаляются данные,
но требуется, чтобы с каждым новым тестом БД находилась в некотором определенном состоянии.
Накатывать фикстуры заново - затратно. Использовать транзакции невозможно (только в
unit тестах это реально). Как можно обеспечить всегда некоторое "стандартное" состояние
БД на момент запуска каждого теста?
    


Ответы

Ответ 1



Серебряной пули нет. Если накатывание фикстур уже заоптимизировано напрочь, и саму фикстуру уже не уменьшить, то вариантов, по сути, немного: писать тесты так, чтобы они работали на любой базе с валидным состоянием. Концептуально это правильнее, т.к. позволяет тестировать систему не только в "исконно чистом виде". Особенно если тесты будут в произвольном порядке (обычно хватает рандомизации очередности разных тест-кейсов). Правда писать такие тесты сложее. Зато ошибок вылавливается больше. "доготавливать" базу в самом тесте. Чистить из базы используемые в тесте модели, обнулять счетчики, заново загружать справочники и т.д. генерировать базы с фикстурами еще до тестов, а непосредственно перед тестами только накатывать миграции под текущую версию

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

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