7

使用 PHPUnit,我想知道我们如何从同一个存根/模拟中获得多个期望。

例如,我想测试模拟是否会display()调用该方法并返回 NULL。我还想测试该方法process()是否会被调用。

事实上我的测试叫做testProcessIsCalledIfDisplayReturnNull().

所以我需要在同一个模拟对象上设置 2 个期望,而手册对此并没有真正的帮助:(

4

2 回答 2

10

如果你知道,该方法在 expects() 中使用 $this->once() 调用一次,否则使用 $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'));
于 2011-04-29T17:20:38.790 回答
6

我已经尝试过了,只要调用顺序保持良好,它似乎就可以工作:

$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');
于 2011-04-29T17:18:15.407 回答