使用 PHPUnit,我想知道我们如何从同一个存根/模拟中获得多个期望。
例如,我想测试模拟是否会display()
调用该方法并返回 NULL。我还想测试该方法process()
是否会被调用。
事实上我的测试叫做testProcessIsCalledIfDisplayReturnNull()
.
所以我需要在同一个模拟对象上设置 2 个期望,而手册对此并没有真正的帮助:(
使用 PHPUnit,我想知道我们如何从同一个存根/模拟中获得多个期望。
例如,我想测试模拟是否会display()
调用该方法并返回 NULL。我还想测试该方法process()
是否会被调用。
事实上我的测试叫做testProcessIsCalledIfDisplayReturnNull()
.
所以我需要在同一个模拟对象上设置 2 个期望,而手册对此并没有真正的帮助:(
如果你知道,该方法在 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'));
我已经尝试过了,只要调用顺序保持良好,它似乎就可以工作:
$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');