PHPUnit每次调用mocked方法时返回值都不同

时间:2014-02-04 04:14:13

标签: php mocking phpunit

例如,我有一个像下面这样的模拟类:

$mock= $this->getMockBuilder("SomeClass")->disableOriginalConstructor()->getMock();

$mock->expects($this->any())
     ->method("someMethod")
     ->will($this->returnValue("RETURN VALUE"));

someMethod的唯一参数是数组$arr

我想要做的是在第一次调用$arr[0]时返回someMethod,第二次调用$arr[1],依此类推。

$arr的大小是动态的。

如果可能的话,任何想法如何实现?

1 个答案:

答案 0 :(得分:24)

$mock->expects($this->any())
    ->method("someMethod")
    ->will($this->onConsecutiveCalls(1, 2, 3));

使用onConsecutiveCalls,您可以为someMethod的每次调用设置返回值。第一个呼叫返回1.第二个呼叫2.第三个呼叫3.