如何在使用Symfony的PHPUnit Bridge时在Behat中使用PHPUnit?

时间:2017-07-28 11:07:48

标签: php symfony phpunit behat

在我的Behat环境中,我已经包含了the manual中描述的PHPUnit的断言:

require_once 'PHPUnit/Autoload.php';
require_once 'PHPUnit/Framework/Assert/Functions.php';

但是,我现在正在使用Symfony的PHPUnit bridge,因此我删除了我明确安装的PHPUnit,并使用了桥接器带来的那个。我需要这样做以避免多个版本"错误描述here

但现在,我无法在behat中使用PHPUnit!

PHP Warning:  Uncaught exception 'Symfony\Component\Debug\Exception\ContextErrorException' with message 'Warning: require_once(PHPUnit/Autoload.php): failed to open stream: No such file or directory'

如何引用PHPUnit桥接器引入的PHPUnit实例?

2 个答案:

答案 0 :(得分:1)

事实证明,我需要通过其路径来要求供应商中的相关文件。对我来说,那是:

StringConverter<LocalDate>

答案 1 :(得分:1)

对于Symfony 4来说,这足以让它为我工作:

require_once(__DIR__ . '/../../vendor/bin/.phpunit/phpunit-5.7/vendor/autoload.php');

然而,这不是一个很好的解决方案,因为如果您使用的是PHP 7.2,PHPUnit Bridge将安装PHPUnit 6.3而不是5.7。

我尝试按如下方式更改composer.json:

"autoload-dev": {
    "psr-4": {
        "App\\Tests\\": "tests/"
    },
    "classmap": [
        "vendor/bin/.phpunit"
    ]
},

哪个确实有效,但打破了全新安装,因为在您运行simple-phpunit之前该文件夹不存在。

我怀疑这可以使用作曲家脚本来运行simple-phpunit,但我对post-install-cmdpre-autoload-dump的简短实验让我无处可去。