Как требовать поставщика / автопогрузку.php с behat.в формате YML
В моем проекте у меня есть файл autoload.php
, который отвечает за требование context классов. Это файл, автоматически сгенерированный Composer. Как я могу включить этот файл, используя behat.yml
?
В Phpunit'S phpunit.xml.dist
я могу сделать это просто с атрибутом bootstrap
следующим образом:
<phpunit bootstrap="vendor/autoload.php">
Есть ли подобная установка в Behat?
Примечание : я не спрашиваю о запуске Behat из Каталога vendor
, потому что когда я это делаю, это работает как ожидалось. Это потому, что файл vendor/bin/behat
содержит
include __DIR__.'/../vendor/autoload.php';
Выражение. Но у меня также есть behat
, установленный глобально, и когда я запускаю команду global behat
, она не загружает мои классы контекста автоматически. И это тот случай использования, который меня интересует.
2 ответа:
По умолчанию используется автозагрузчик Composer.
Однако в зависимости от того, где вы установили Behat, будет использоваться другой загрузчик. Автозагрузчик проекта используется, если вы установили 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