2014-02-18 3 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(); 
Смежные вопросы