nalogka/codeception-data-creation

Codeception module for runtime test data creation.

v0.1.10 2021-03-22 12:01 UTC

This package is auto-updated.

Last update: 2024-04-22 19:35:12 UTC


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() для подстановки в строку значений полей ранее созданных данных.