2015-03-04 2 views
3

В моем проекте у меня есть файл autoload.php, который отвечает за то, что контекст классов. Это файл, автоматически созданный Composer. Как включить этот файл с помощью 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, она не может автозагружать мои классы контекста. И это тот случай, который меня интересует.

ответ

3

Автозагрузчик композитора используется по умолчанию.

Однако, в зависимости от того, где вы установили, будет использоваться другой автозагрузчик. Автозагрузчик проекта используется, если вы установили Behat в свой проект, а глобальный автозагрузчик используется, если вы установили Behat глобально.

Невозможно изменить это поведение только с помощью конфигурации. Обратите внимание, что это ожидаемое поведение. См. https://github.com/Behat/Behat/issues/490#issuecomment-40928786

Кроме того, установка Behat в вашем проекте является рекомендуемым способом.

Возможно, вы могли бы написать расширение Behat, чтобы включить автозагрузчик проекта, даже если используется глобальная версия поведения, но я не думаю, что это того стоит. Это также может привести к нечетным вопросам самозарядных с повторяющимися или неправильными версиями классов и т.д.

Наконец, вы можете также настроить автозагрузчик вручную: http://docs.behat.org/en/latest/guides/6.profiles.html#custom-autoloading

+0

Это имеет смысл, но мне все же хотелось бы иметь возможность загружать мой тестовый проект. Если не для целей автозагрузки, то для определения констант, импорта услуг и т. Д. [Behat 1.0 имел поддержку файла bootstrap.php] (http://docs.behat.org/en/v2.5/cookbook/migrate_from_1x_to_20.html#migrating- bootstrap-scripts), и я не могу себе представить, почему он был удален. Предлагаемое решение состоит в том, чтобы сделать это сейчас в файлах контекста. Это ИМО - очень грязное обходное решение, а не решение. –

+0

Но вы дали мне идею для более чистого решения. Я напишу что-то вроде расширения (или хотя бы бегуна с бутстрапом) для Бехата, когда найду какое-то время. –

+0

Одна из первых вещей, которые я делаю при начальной загрузке проекта, - запустить 'composer init'. Это приведет к появлению таких инструментов, как behit in, и я могу использовать их для загрузки/спецификации/etc. Я действительно не вижу смысла устанавливать поведение в глобальном масштабе. Это также не рекомендуется для его установки. –

Смежные вопросы