在我的项目中,我有一个 autoload.php
文件,它负责需要上下文类。这是 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
,当我运行 global behat
命令时,它无法自动加载我的上下文类。这是我感兴趣的用例。 最佳答案
默认情况下使用 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
关于composer-php - 如何使用 behat.yml 要求 vendor/autoload.php,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28852162/