PHPUnit: ожидает значения метода - PullRequest
40 голосов
/ 15 сентября 2011

Когда я создаю новый макет, мне нужно вызвать метод ожидаемых. Что именно это делает? А как насчет его аргументов?

$todoListMock = $this->getMock('\Model\Todo_List');
        $todoListMock->expects($this->any())
            ->method('getItems')
            ->will($this->returnValue(array($itemMock)));

Я нигде не могу найти причину (я пробовал документы). Я читал источники, но не могу этого понять. Спасибо.

Ответы [ 2 ]

49 голосов
/ 15 сентября 2011

Ожидает () - Устанавливает, сколько раз вы ожидаете вызова метода:

$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 () в expected (), в противном случае используйте $ this-> any ()

см
PHPUnit, макет с несколькими вызовами Expected ()

https://phpunit.de/manual/current/en/test-doubles.html#test-doubles.stubs

http://www.slideshare.net/mjlivelyjr/advanced-phpunit-testing

48 голосов
/ 15 сентября 2011

Просмотр исходного кода скажет вам:

/**
 * 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 () возвращает сопоставление, которое соответствует, когда метод, для которого он выполняется, выполняется ноль или более раз.
  • never () возвращает сопоставление, которое соответствует, когда метод, для которого он вычисляется, никогда не выполняется.
  • atLeastOnce () возвращает сопоставление, которое соответствует, когда метод, для которого он оценивается, выполняется хотя бы один раз.
  • once () возвращает совпадение, которое соответствует, когда метод, для которого он выполняется, выполняется ровно один раз.
  • точно (int $ count) возвращает сопоставление, которое соответствует, когда метод, для которого он вычисляется, выполняется ровно $ count раз.
  • at (int $ index) возвращает сопоставление, которое соответствует, когда метод, для которого он оценивается, являетсявызывается по заданному индексу $.
...