在我的项目中,我有一个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
命令时,它无法自动加载我的上下文类。这是我感兴趣的用例。
答案 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: