2014-02-18 69 views
0

我有以下問題。調用父類函數的模擬類

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()); 

我得到的錯誤:無法斷言空是真實的。

這怎麼可能。該函數總是返回false的真。

這是否與你不能調用父模擬對象的方法有關?

回答

0

我發現我不想嘲笑整個班級。只有特定的功能。 所以當你定義你的模擬對象時,你使用setMethods()函數來指定你想要模擬的特定函數。

所以這樣的:

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