Модуль Codeception для создания данных для теста в виде шагов теста
Мотивация
При написании теста (особенно при использовании Gherkin-сценариев) удобнее видеть предусловия теста рядом с самим тестом, а не в отдельных файлах фикстур.
Данный модуль позволяет организовать создание данных для теста в виде отдельных шагов теста, что позволит писать такие тестовые сценарии:
# language: ru
Функционал: Персоны. Обновление
Сценарий: Ошибка обновления. Некорректные данные
Пусть существует контрагент-персона "Иван Иванов"
Если пришел запрос PUT /people/{id персоны "Иван Иванов"} с телом:
"""
{
"firstName": "",
}
"""
То HTTP-код ответа будет 400
А в БД должна быть контрагент-персона с данными:
"""
{
"firstName": "Иван",
}
"""
Сценарий: Ошибка обновления. Не уникальная персона
Пусть существует контрагент-персона с паспортом "10-01 123456"
И существует контрагент-персона "Иван"
Если пришел запрос PUT /people/{id персоны "Иван"} с телом:
"""
{
"passport": "10-01 123456",
}
"""
То HTTP-код ответа будет 400
Модуль расширяет функционал стандартного Doctrine2 модуля.
Использование
Устанавливайте с использованием composer
composer require --dev nalogka/codeception-data-creation
Подключайте модуль в функциональный и/или приемочный test suite.
Создавайте модули-хэлперы для создания данных (по одному модулю на
каждый тип данных). Каждый такой модуль должен реализовывать
Nalogka\Codeception\Database\DataCreatorModuleInterface
. В экземпляр
модуля внедряется Nalogka\Codeception\Database\DataCreation
и в
конфигурации test suite указывается зависимость от него.
В модуле-хэлпере создания данных должен быть метод создания, первым
аргументом в который приходит строковой идентификатор данных
(уникальный в рамках теста). В методе создания данных созданный
объект необходимо зарегистрировать, используя методы
DataCreation::persistAndRegisterCreated()
или
DataCreation::registerPreviouslyCreated()
.
Далее в шагах проверки можно извлекать необходимые данные, используя
DataCreation::getOrCreate()
.
Также есть вспомогательный метод DataCreation::fillDataPlaceholders()
для подстановки в строку значений полей ранее созданных данных.