gpt4 book ai didi

phpunit mock - 方法不存在

转载 作者:可可西里 更新时间:2023-11-01 13:05:12 26 4
gpt4 key购买 nike

我最近在一个基于 CakePhp 3.x 的应用程序的 IntegrationTestCase 中将 PHPunit 从 5.3 更新到 5.5。而且我不明白如何更新我的模拟生成脚本。

最初我是这样创建我的模拟的:

$stub = $this->getMock('SomeClass', array('execute'));
$stub->method('execute')
->will($this->returnValue($this->returnUrl));

在更改为 PHPUnit 5.5 后,我收到了以下警告:

PHPUnit_Framework_TestCase::getMock() is deprecated,
use PHPUnit_Framework_TestCase::createMock()
or PHPUnit_Framework_TestCase::getMockBuilder() instead

为了修复此警告,我将模拟生成更改为:

$stub = $this->getMockBuilder('SomeClass', array('execute'))->getMock();
$stub->method('execute')
->will($this->returnValue($this->returnUrl));```

现在我在运行测试时收到以下错误消息:

exception 'PHPUnit_Framework_MockObject_RuntimeException' 
with message 'Trying to configure method "execute" which cannot be
configured because it does not exist, has not been specified,
is final, or is static'

任何人都知道,如何避免这个错误?谢谢。

最佳答案

PHPUnit_Framework_TestCase::getMockBuilder() 仅采用一 (1) 个参数,即类名。模拟方法将通过返回的模拟生成器对象 setMethods() 方法定义。

$stub = $this
->getMockBuilder('SomeClass')
->setMethods(['execute'])
->getMock();

另见

关于phpunit mock - 方法不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39601142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com