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

时间:2015-11-01 14:49:47

标签: php unit-testing mocking phpunit

我想测试一个对象的方法被调用。我想通过模拟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()方法的类吗?

1 个答案:

答案 0 :(得分:1)

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

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