PHPUnit макет с несколькими вызовами Expected () - PullRequest
5 голосов
/ 29 апреля 2011

Используя PHPUnit, мне интересно, как мы можем получить многократное ожидание от одной заглушки / макета.

Например, я хочу проверить, что у макета будет вызываться метод display() и возвращаться NULL.Я также хочу проверить, будет ли вызываться метод process().

Фактически мой тест называется testProcessIsCalledIfDisplayReturnNull().

Поэтому мне нужно настроить 2 ожидания для одного и того же фиктивного объекта,и руководство не очень помогает в этом: (

Ответы [ 2 ]

6 голосов
/ 29 апреля 2011

Если вы знаете, что этот метод вызывается один раз, используйте $ this-> Once () в expected (), в противном случае используйте $ this-> any ()

$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'));
5 голосов
/ 29 апреля 2011

Я пробовал это, и, кажется, работает, пока порядок вызовов остается хорошим:

$mock = $this->getMock('mockWorker', array('display', 'process'));
$mock->expects($this->exactly(1))
     ->method('display')
     ->will($this->returnValue(null));
$mock->expects($this->exactly(1))
     ->method('process');
...