Возможно ли создать макет с отключенным конструктором и вручную установленными защищенными свойствами?
Вот идиотский пример:
class A {
protected $p;
public function __construct(){
$this->p = 1;
}
public function blah(){
if ($this->p == 2)
throw Exception();
}
}
class ATest extend bla_TestCase {
/**
@expectedException Exception
*/
public function testBlahShouldThrowExceptionBy2PValue(){
$mockA = $this->getMockBuilder('A')
->disableOriginalConstructor()
->getMock();
$mockA->p=2; //this won't work because p is protected, how to inject the p value?
$mockA->blah();
}
}
Поэтому я хочу ввести значение p, которое защищено, поэтому я не могу. Должен ли я определять setter или IoC, или я могу сделать это с помощью phpunit?