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
我正在使用 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