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

Inc*_*ito 13 php phpunit mocking

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

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

$mock->expects($this->any())
     ->method("someMethod")
     ->will($this->returnValue("RETURN VALUE"));
Run Code Online (Sandbox Code Playgroud)

唯一的参数someMethod是阵列$arr.

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

大小$arr是动态的.

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

Sen*_*ion 27

$mock->expects($this->any())
    ->method("someMethod")
    ->will($this->onConsecutiveCalls(1, 2, 3));
Run Code Online (Sandbox Code Playgroud)

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

  • 尝试 returnCallback 或 returnValueMap (2认同)