调用模拟类的父函数

时间:2014-02-18 16:24:09

标签: unit-testing mocking phpunit

我有以下问题。

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。

是否与您无法调用模拟对象的父方法有关?

1 个答案:

答案 0 :(得分:0)

我发现我不想嘲笑整个班级。只有特定的功能。 因此,在定义模拟对象时,您使用setMethods()函数来指定要模拟的特定函数。

所以这样:

$oMockedStm = $this->getMockBuilder('B')
                ->setMethods(array('someMethod','anotherMethod'))
                ->getMock();