PHPUnit: 存根方法未定义
2022-08-30 23:33:38
我一定错过了什么。我试图在PHPUnit中的类上存根方法,但是当我在模拟对象上调用方法时,它告诉我该方法未定义。
存根的示例类:
namespace MyApp;
class MyStubClass
{
public function mrMethod()
{
// doing stuff
}
}
为了存根,我写道:
// specifying all getMock() args to disable calling of class __construct()
$stub = $this->getMock('MyStubClass', array(), array(), 'MockMyStubClass', false, false, false);
$stub->expects($this->any())
->method('mrMethod')
->will($this->returnValue('doing stuff'));
但是在调用 stubbed 方法时,我得到一个异常:
$stub->mrMethod();
//PHP Fatal error: Call to undefined method MockMyStubClass::mrMethod()
我使用的是 PHPUnit 3.4.3 和 PHP 5.3.0。
我注意到的另一件小事是,如果在方法中指定命名空间会导致类加载异常,因为双精度命名空间:getMock()
$stub = $this->getMock('MyApp\MyStubClass');
// Fatal error: Class 'MyApp\MyApp\MyStubClass' not found
这让我觉得很奇怪(getmock()不会接受带有前导反斜杠的命名空间)。我唯一能想到的可能是因为这个类是在自动加载机上注册的?
有什么想法吗?