Я пытаюсь настроить Фиктивный объект в PHPunit для возвращения значения для различных свойств (к которым получают доступ с помощью __, получают функцию),
Пример:
class OriginalObject {
public function __get($name){
switch($name)
case "ParameterA":
return "ValueA";
case "ParameterB":
return "ValueB";
}
}
Я пытаюсь дразнить это использование:
$mockObject = $this->getMock("OrigionalObject");
$mockObject ->expects($this->once())
->method('__get')
->with($this->equalTo('ParameterA'))
->will($this->returnValue("ValueA"));
$mockObject ->expects($this->once())
->method('__get')
->with($this->equalTo('ParameterB'))
->will($this->returnValue("ValueB"));
но это перестало работать ужасно :-(
Я еще не пробовал издеваться над __get, но, возможно, это сработает:
// getMock() is deprecated
// $mockObject = $this->getMock("OrigionalObject");
$mockObject = $this->createMock("OrigionalObject");
$mockObject->expects($this->at(0))
->method('__get')
->with($this->equalTo('ParameterA'))
->will($this->returnValue('ValueA'));
$mockObject->expects($this->at(1))
->method('__get')
->with($this->equalTo('ParameterB'))
->will($this->returnValue('ValueB'));
Я уже использовал $ this-> at () в тесте, и он работает (но не t оптимальное решение). Я понял это из этого протектора:
Как я могу заставить PHPUnit MockObjects возвращать разные значения в зависимости от параметра?