如何使用behat.yml要求vendor / autoload.php

时间:2015-03-04 10:32:26

标签: composer-php behat

在我的项目中,我有一个autoload.php文件,负责要求 context 类。这是Composer自动生成的文件。如何使用behat.yml包含该文件?

在PHPUnit的phpunit.xml.dist中,我可以使用bootstrap属性这样做:

<phpunit bootstrap="vendor/autoload.php">

Behat中有类似的设置吗?

注意:我不是要求从vendor目录运行Behat,因为当我这样做时,它按预期工作。那是因为文件vendor/bin/behat包含

include __DIR__.'/../vendor/autoload.php';

表达。但我也全局安装了behat,当我运行全局behat命令时,它无法自动加载我的上下文类。这是我感兴趣的用例。

2 个答案:

答案 0 :(得分:3)

默认情况下使用Composer的自动加载器。

但是,根据您安装的位置,将使用不同的自动装载机。如果您在项目中安装了Behat,则使用Project的自动加载器,而如果您在全局安装了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

答案 1 :(得分:0)

您可以使用以下新的BehatExtension:

https://github.com/Postcon/BehatBootstrapExtension