Facade mock 调用了两次而不是首先覆盖?

Facade mock called twice not overriding first?

我正在使用 Laravel 并模拟 Facade 对象,例如

Confide::shouldReceive('user')->atLeast(1)->andReturn( (object) array('id' => 42) );
var_dump(Confide::user()->id); // returns int(42)
Confide::shouldReceive('user')->atLeast(1)->andReturn( (object) array('id' => 1) );
var_dump(Confide::user()->id); // returns int(42) but should be int(1)

但是 var_dump(Confide::user()->id); 总是 returns 42。即使第二个应该 return 1 因为我将它设置为 1.

我做错了什么?

Confide::shouldReceive('user')->atLeast(1)->andReturn(
    (object) array('id' => 42),
    (object) array('id' => 1)
);

所以这必须至少 运行 一次。

第一次调用将 return 一个带有 id = 42 的对象,第二次和任何后续调用将 return 一个带有 id = 1 的对象。

PS: 我从来没有用过mockery,我只是查看了它的文档http://docs.mockery.io/en/latest/reference/expectations.html