2017-07-28 90 views
1

在我贝哈特背景下,我已经列入PHPUnit的断言在the manual描述:如何在使用Symfony的PHPUnit Bridge时在Behat中使用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实例?

回答

1

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

require_once(__DIR__.'/../../vendor/symfony/phpunit-bridge/bin/.phpunit/phpunit-5.7/vendor/autoload.php'); 
require_once(__DIR__.'/../../vendor/symfony/phpunit-bridge/bin/.phpunit/phpunit-5.7/src/Framework/Assert/Functions.php'); 
+0

太好了,你可以接受这个答案。 – lauda

+0

@lauda恐怕你不能接受你自己对问题的回答2天。但我打算。 – Sam

+0

您可能也想要向上游报告。由于这是Behat相关,它可能会看到一些牵引力(或已有更好的解决方案)。 – hakre

1

为symfony1.2 4,这足以让它的工作对我来说:

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

但是它不是一个很好的解决方案正在进行中,作为PHPUnit的大桥将安装PHPUnit 6.3,而不是5.7,如果你使用PHP 7.2。

我试图改变composer.json如下:

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

它的工作,但打破了全新安装,因为该文件夹不存在,直到您运行simple-phpunit

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