我正在尝试编写单元测试,我需要能够模拟对App :: make(' ClassName') - > find($ x)的内部调用。但是,当我尝试这个时:
$mock = $this->getMockBuilder('ClassName')->
setMethods(['find'])->
getMock();
$mock->method('find')->willReturn('test');
echo $mock->find(1);
我收到PHPUnit_Framework_MockObject_BadMethodCallException
,没有描述错误的消息。查看ad xdebug trace,我看到它调用了mock :: find方法,然后立即调用spl_autoload_call来获取BadMethodCallException类。
为什么find方法失败?如果我使用不同的方法(例如findx
),那么它的效果非常好。什么是find
的魔力,我该如何解决?