PHPUnit: ожидает смысл метода
Когда я создаю новый макет, мне нужно вызвать метод expects. Что именно он делает? Как его аргументы?
$todoListMock = $this->getMock('\Model\Todo_List');
$todoListMock->expects($this->any())
->method('getItems')
->will($this->returnValue(array($itemMock)));
Я не могу найти причину в любом месте (я пробовал документы). Я читал источники, но не могу понять. Спасибо.
Ответы
Ответ 1
expects() - устанавливает, сколько раз вы ожидаете вызова метода:
$mock = $this->getMock('nameOfTheClass', array('firstMethod','secondMethod','thirdMethod'));
$mock->expects($this->once())
->method('firstMethod')
->will($this->returnValue('value'));
$mock->expects($this->once())
->method('secondMethod')
->will($this->returnValue('value'));
$mock->expects($this->once())
->method('thirdMethod')
->will($this->returnValue('value'));
Если вы знаете, этот метод вызывается однажды, используйте $this- > once() в expects(), в противном случае используйте $this- > any()
см:
PHPUnit mock с несколькими вызовами expects()
https://phpunit.de/manual/current/en/test-doubles.html#test-doubles.stubs
http://www.slideshare.net/mjlivelyjr/advanced-phpunit-testing
Ответ 2
Посмотрите в исходный код:
/**
* Registers a new expectation in the mock object and returns the match
* object which can be infused with further details.
*
* @param PHPUnit_Framework_MockObject_Matcher_Invocation $matcher
* @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
*/
public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher);
В руководстве PHPUnit перечислены доступные совпадения
- any() возвращает совпадение, совпадающее, когда метод, для которого он оценивается, выполняется ноль или более раз.
- никогда() возвращает совпадение, совпадающее, когда метод, для которого он оценивается, никогда не выполняется.
- atLeastOnce() возвращает совпадение, совпадающее, когда метод, для которого он оценивается, выполняется хотя бы один раз.
- once() возвращает совпадение, совпадающее, когда метод, для которого он оценивается, выполняется ровно один раз.
- точно (int $count) возвращает совпадение, совпадающее, когда метод, для которого он оценивается, выполняется точно в $count times.
- at (int $index) возвращает совпадение, совпадающее, когда метод, для которого он оценивается, вызывается при заданном $index.