Почему у ложного объекта неправильный тип подсказки? - PullRequest
0 голосов
/ 16 мая 2011

Попытка сделать простой макет Zend_Config для метода, который требует тип объекта Zend_Config, но макет возвращает тип Mock_Zend_Config.

Конечно, я что-то пропустил в этот поздний час, и я явно ошибаюсь ввызов функции, но я не могу определить свою ошибку.

$config = $this->getMock("Zend_Config"); 

Возвращает Mock_Zend_Config, и мой объект должен иметь тип Zend_Config.Посмотрел подпись функции в чит-листе и изменил вызов метода на:

$config = $this->getMock("Zend_Config", array(), array($confArray),"Zend_Config",true); 

Эта версия генерирует фатальную ошибку с сообщением "Zend_Config уже существует".

В sidenote и, вероятно, нетотносится к phpunit как таковому, но typehint не генерирует фатальную ошибку, как следует, и делает это при запуске без тестов.

Есть идеи о том, чего мне не хватает в la mock?

1 Ответ

4 голосов
/ 16 мая 2011

Поддельные объекты расширяют подделанный объект. Подсказка типа для Zend_Config будет удовлетворяться любым классом, расширяющим Zend_Config, потому что по определению Mock_Zend_Config расширяется Zend_Config и поэтому является Zend_Config. Следовательно, вы получите фатальную ошибку при попытке назвать макет как класс, который он расширяет, и ни одного, если вы этого не сделаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...