PHPUnit对mock上未定义方法的致命错误调用


PHPUnit fatal error call to undefined method on mock

我想测试是否调用了对象上的方法。我想通过模拟Object而不是任何特定的类来实现这一点。但是下面的代码抛出了一个致命的错误:

class MyTest extends PHPUnit_Framework_TestCase
{
    public function testSomeMethodIsCalled()
    {
        $mock = $this->getMock('Object');
        $mock->expects($this->once())
                ->method('someMethod');
        $mock->someMethod();
    }
}

上面的死亡与一个错误:

Fatal error: Call to undefined method Mock_Object_204ac105::someMethod()

我确信有一种方法可以做到这一点,而不必编写一个实际上有someMethod()方法的类?

当您通过$this->getMock()创建mock时,您必须设置该数组中应该可用的方法,因此此代码应该有效:

$mock = $this->getMock('Object', ['someMethod']);