小编dun*_*koh的帖子

由于“未知的命名参数”,phpunit 测试在进入 php 8.0 后失败

一旦我们需要的一些第三方库准​​备就绪,我们就准备迁移到 php 8.0.15。

我们用于单元测试的集中式 setUp() 函数处理我们的类模拟的 constructorArg 填充。

当前使用 phpunit v9.5.14,我们得到失败的测试,响应错误:未知的命名参数 $User

据我们所知,我们没有在代码库中使用命名参数。

if (empty($this->constructorArgs)) {
    $this->constructorArgs = array('User');
}
if (!empty($this->constructorArgs) && is_array($this->constructorArgs)) {
    foreach ($this->constructorArgs as $classname) {
        if (is_array($classname)) {
            $args[key($classname)] = current($classname);
            $classname = key($classname);
        } else {
            if ($classname == "Twig" || $classname == "Twig\Environment") {
                $args[$classname] = TwigFactory::mockTwig();
            } else {
                $args[$classname] = $this->getMockBuilder($classname)->disableOriginalConstructor()->getMock();
            }
        }
        $container->set($classname, $args[$classname]);
    }
}

$this->mock = $this->getMockBuilder($this->class)
    ->setMethods($this->methods)
    ->setConstructorArgs($args)
    ->getMock();   <-- Error states this line, unfortunately no …
Run Code Online (Sandbox Code Playgroud)

php php-8

6
推荐指数
1
解决办法
1798
查看次数

标签 统计

php ×1

php-8 ×1