在我的项目中,我有一个 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/

10-13 09:02