PHPUnit 7.2和Codeception 2.4不兼容

时间:2018-08-01 02:33:32

标签: php laravel phpunit codeception

尝试使用Laravel框架5.6安装CodeCeption

我收到此错误。

我遵循的安装步骤是 1.作曲者需要代码接收/代码接收--dev 2. php ./vendor/bin/codecept引导程序

我遇到的错误是

Fatal error: Declaration of Codeception\Test\Unit::getDependencies() must be compatible with PHPUnit\Framework\TestCase::getDependencies(): array in /vendor/codeception/codeception/src/Codeception/Test/Unit.php on line 14

有人可以告诉您如何解决此问题或将其降级并使其与Laravel 5.6兼容吗?

2 个答案:

答案 0 :(得分:2)

在Codeception / Test / Unit.php第133行中,将getDependencies函数更改为具有数组返回类型。 : array

更改后,getDependencies函数应如下所示。

public function getDependencies(): array
{
    $names = [];
    foreach ($this->getMetadata()->getDependencies() as $required) {
        if ((strpos($required, ':') === false) and method_exists($this, $required)) {
            $required = get_class($this) . ":$required";
        }
        $names[] = $required;
    }
    return $names;
}

答案 1 :(得分:2)

这只是fixed in codeception/codeception version 2.4.5,所以运行composer update,该错误应该不再发生了。


来自变更日志(重点是我的):

  2.4.5      
      
  • 已修复PHPUnit 7.2兼容性。
  •   
  • 引入了 RunBefore 扩展名以在运行测试之前执行脚本。参见@aashmelev#5049。
  •   
  • [Db]通过@bangertz为MySQL添加了两个选项      
        
    • ssl_cipher-用于SSL加密的一个或多个允许密码的列表
    •   
    • ssl_verify_server_cert-禁用证书CN验证
    •   
  •   
  • [Db]设置为reconnect时,请务必先断开连接。通过@ashnazg
  •   
  • [Db]更明确的PDO销毁后关闭,@ ashnazg关闭已打开的交易。
  •   
  • [记录器扩展]通过@OneEyedSpaceFish改进了错误记录。参见#5101
  •   
  • [流明]修复了通过REST模块上传文件的问题。通过@retnek。
  •   
  • 已修复:函数getMetadata()可能不存在,导致致命错误。参见@marcovtwout的#4913
  •