nalogka / codeception-data-creation
Codeception module for runtime test data creation.
Installs: 5 168
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^7.1.3
- symfony/doctrine-bridge: ^4.2
- symfony/property-access: ^2.0||^3.0||^4.0
- symfony/property-info: ^4.2
Requires (Dev)
- codeception/base: ^2.4
- doctrine/orm: ^2.6
README
Мотивация
При написании теста (особенно при использовании 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()
для подстановки в строку значений полей ранее созданных данных.