Как требовать vendor/autoload.php с behat.yml
В моем проекте у меня есть файл autoload.php
, который отвечает за требование контекстных классов. Это файл, автоматически сгенерированный композитором. Как я могу включить этот файл, используя behat.yml
?
В PHPUnit phpunit.xml.dist
Я могу сделать это просто с помощью атрибута bootstrap
следующим образом:
<phpunit bootstrap="vendor/autoload.php">
Есть ли аналогичная настройка в Behat?
Примечание: Я не спрашиваю о запуске Behat из каталога vendor
, потому что, когда я это делаю, это работает так, как ожидалось. Это потому, что файл vendor/bin/behat
содержит
include __DIR__.'/../vendor/autoload.php';
Выражение. Но у меня также есть behat
, установленный глобально, и когда я запускаю глобальную команду behat
, она не загружает мои классы контекста автоматически. И это тот вариант использования, который меня интересует.
2 answers
По умолчанию используется автозагрузчик композитора.
Однако, в зависимости от того, где вы установили, будет использоваться другой загрузчик. Загрузчик проекта используется, если вы установили Behat в своем проекте, в то время как глобальный загрузчик используется, если вы установили Behat глобально.
Невозможно изменить это поведение только с помощью конфигурации. Обратите внимание, что это ожидаемое поведение. Видеть https://github.com/Behat/Behat/issues/490#issuecomment-40928786
Кроме того, рекомендуется установить Behat в вашем проекте.
Вероятно, вы могли бы написать расширение Behat, чтобы включить автозагрузчик проекта, даже если используется глобальная версия behat, но я не думаю, что это того стоит. Это также может привести к странным проблемам с автоматической загрузкой с дублирующими или неправильными версиями классов и т.д.
Наконец, вы также можете настроить автозагрузчик вручную: http://docs.behat.org/en/latest/guides/6.profiles.html#custom-autoloading
Вы могли бы использовать следующее новое расширение поведения: