在php嘲笑中获取不同的连续值

Bik*_*net 5 php phpunit mockery

太长了;当使用相同的参数调用mockery )`时, 如何获得value1第一次和value2第二次?shouldReceive('method

假设我有一个$order使用方法实现此签名的对象getState()

interface Order {
    public function getState();
}
Run Code Online (Sandbox Code Playgroud)

现在,在单元测试中,我想使用模拟来模拟$order对象,以便何时getState调用

  • 第一次返回initialized
  • 第二次返回processing

好吧,我知道对于返回值根据使用的参数而不同的情况可以这样做...->with($param1)->andReturn...

PluswithConsecutive似乎是这样做的方式phpunit。我如何在嘲笑中实现这一点?我在嘲笑文档和 stackoverflow上都找不到任何有关它的信息。

谢谢。

Mat*_*teo 16

从声明返回值期望部分:

可以设置多个返回值的期望。通过提供一系列返回值,我们告诉 Mockery 在每次后续调用该方法时返回什么值:

$mock = \Mockery::mock('MyClass');
$mock->shouldReceive('name_of_method')
    ->andReturn($value1, $value2, ...)
Run Code Online (Sandbox Code Playgroud)

第一次调用将返回 $value1,第二次调用将返回 $value2。