Вот как я это сделал, я понятия не имею, если это правильно, но это работает:
class parentClass {
public function whatever() {
$this->doSomething();
}
}
class childClass extends parentClass {
public $variable;
public function subjectUnderTest() {
$this->variable = 'whocares';
parent::whatever();
}
}
Сейчас в тесте я делаю:
public function testSubjectUnderTest() {
$ChildClass = $this->getMock('childClass', array('doSomething'))
$ChildClass->expects($this->once())
->method('doSomething');
$ChildClass->subjectUnderTest();
$this->assertEquals('whocares', $ChildClass->variable);
}
что за?
Здесь я рассуждаю так: все, что я действительно хочу протестировать, это установить или нет мою переменную. меня действительно не волнует, что происходит в родительском методе, но, поскольку вы не можете предотвратить вызов родительского метода, то, что я делаю, это высмеивает зависимые методы родительского метода.
Теперь иди и скажи мне, что я не прав:)