我有以下问题。
class A
{
public function isNew()
{
return ($this->ID == 0);
}
}
class B extends A
{
//Some functions
}
现在我想要模拟B类。所以我有一些陈述
$oMockedStm = $this->getMockBuilder('B')->getMock();
$oMockedStm->expects($this->any())->method('someMethod')->will($this->returnValue(TRUE));
$oMockedStm->expects($this->any())->method('anotherMethod')->will($this->returnValue(TRUE));
现在我做的时候
$this->assertTrue($oMockedStm->isNew());
我收到错误:声明null为真的失败。
这怎么可能。该函数始终返回true为false。
是否与您无法调用模拟对象的父方法有关?
答案 0 :(得分:0)
我发现我不想嘲笑整个班级。只有特定的功能。
因此,在定义模拟对象时,您使用setMethods()
函数来指定要模拟的特定函数。
所以这样:
$oMockedStm = $this->getMockBuilder('B')
->setMethods(array('someMethod','anotherMethod'))
->getMock();