如何要求 vendor/autoload.php 和 behat.yml
How to require vendor/autoload.php with behat.yml
在我的项目中,我有一个 autoload.php
文件,它负责要求 context 类。这是 Composer 自动生成的文件。如何使用 behat.yml
包含该文件?
在 PHPUnit 的 phpunit.xml.dist
中,我可以像这样使用 bootstrap
属性简单地做到这一点:
<phpunit bootstrap="vendor/autoload.php">
Behat中有类似的设置吗?
注意:我不是在询问 vendor
目录中的 运行ning Behat,因为当我这样做时它会按预期工作。那是因为文件 vendor/bin/behat
包含
include __DIR__.'/../vendor/autoload.php';
表达式。但是我也全局安装了 behat
,当我使用 运行 全局 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
您可以使用以下新的 BehatExtension:
在我的项目中,我有一个 autoload.php
文件,它负责要求 context 类。这是 Composer 自动生成的文件。如何使用 behat.yml
包含该文件?
在 PHPUnit 的 phpunit.xml.dist
中,我可以像这样使用 bootstrap
属性简单地做到这一点:
<phpunit bootstrap="vendor/autoload.php">
Behat中有类似的设置吗?
注意:我不是在询问 vendor
目录中的 运行ning Behat,因为当我这样做时它会按预期工作。那是因为文件 vendor/bin/behat
包含
include __DIR__.'/../vendor/autoload.php';
表达式。但是我也全局安装了 behat
,当我使用 运行 全局 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
您可以使用以下新的 BehatExtension: