PHPUnit “Mocked method 不存在”。当使用 $mock->expects($this->at(...))
2022-08-30 12:15:40
我在PHPUnit模拟对象中遇到了一个奇怪的问题。我有一个应该调用两次的方法,所以我使用的是“at”匹配器。这是第一次调用该方法,但由于某种原因,第二次调用它时,我得到“Mocked方法不存在”。我以前使用过“at”匹配器,从未遇到过这种情况。
我的代码看起来像这样:
class MyTest extends PHPUnit_Framework_TestCase
{
...
public function testThis()
{
$mock = $this->getMock('MyClass', array('exists', 'another_method', '...'));
$mock->expects($this->at(0))
->method('exists')
->with($this->equalTo('foo'))
->will($this->returnValue(true));
$mock->expects($this->at(1))
->method('exists')
->with($this->equalTo('bar'))
->will($this->returnValue(false));
}
...
}
当我运行测试时,我得到:
Expectation failed for method name is equal to <string:exists> when invoked at sequence index 1.
Mocked method does not exist.
如果我删除第二个匹配器,则不会收到错误。
以前有人遇到过这种情况吗?
谢谢!