Behat 3.0 включает папку/путь

Я пытаюсь настроить Behat 3.0. Я хочу изменить путь, по которому идут мои функции.

В настоящее время моя конфигурация behat.yml выглядит так:

default:
    autoload:
        '': app/tests/acceptance

Запуск behat --init создаст acceptance/FeatureContext.php в каталоге app/tests.

Однако он создаст папку features в корне моего проекта. Вместо этого я бы хотел, чтобы эта папка features была помещена в папку app/tests/acceptance.

Как я могу это сделать?


person FooBar    schedule 12.01.2015    source источник


Ответы (1)


Behat 3 поддерживает комплекты и профили.

Единственное, что вам нужно сделать, это добавить пользовательские пути в профиль по умолчанию:

default:
  autoload:
    '': %paths.base%/app/tests/acceptance
  suites:
    default:
      paths: [ %paths.base%/app/tests/acceptance/features ]

Совет 1

Всегда используйте переменную %paths.base%, чтобы иметь возможность запускать тесты Behat из другого каталога.

Совет 2

В зависимости от механизма автозагрузки Behat PSR-0 могут возникнуть проблемы, если у вас будет реализовано больше контекстов.

Хорошей практикой является использование механизма автозагрузки PSR-4 композитора, чтобы иметь возможность запускать функции Behat с пространством имен.

После того, как вы настроили Behat, как в примере выше, вам нужно удалить раздел автозагрузки в bahat.yml и добавить contexts в профиль default:

default:
  suites:
    default:
      paths: [ %paths.base%/app/tests/acceptance/features ]
      contexts: [ MyApp\Tests\Acceptance\FeatureContext ]

Добавьте конфигурацию автозагрузки в composer.json:

{
    [...]
    "autoload-dev": {
        "psr-4": {
            "MyApp\\Tests\\Acceptance\\": "app/tests/acceptance"
        }
    }
    [...]
}

А потом просто дамп автозагрузчика с composer dump-autoload.

person Sławomir Chrobak    schedule 12.01.2015