例如,我有一个模拟类,如下所示:
$mock= $this->getMockBuilder("SomeClass")->disableOriginalConstructor()->getMock();
$mock->expects($this->any())
->method("someMethod")
->will($this->returnValue("RETURN VALUE"));
someMethod
的唯一参数是一个数组 $arr
。
我想做的是在第一次调用someMethod
时返回$arr[0]
,$arr[1]
> 第二次,依此类推。
$arr
的大小是动态的。
如果可能的话,知道如何实现这一目标吗?
最佳答案
$mock->expects($this->any())
->method("someMethod")
->will($this->onConsecutiveCalls(1, 2, 3));
使用 onConsecutiveCalls,您可以为 someMethod 的每次调用设置返回值。第一次调用返回 1。第二次调用返回 2。第三次调用返回 3。
关于PHPUnit 每次调用模拟方法都有不同的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21542838/