在静态方法上模拟 public 属性?

Mock a public property on a static method?

我正在使用 Confide,这需要您执行类似

的操作
Confide::user()->id

获取用户ID。我正在尝试模拟它,因此它 returns 是一个垃圾用户 ID。我可以通过使用 Laravel 内置的 Facade mocking

来模拟 Confide::user()
Confide::shouldReceive('user')->once()->andReturn('blah');

如果我运行 Confide::user() 它 returns blah.

但是如果我运行 Confide::user()->id 它如何添加属性 returns 模拟值?

怎么样

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

这样您就可以创建具有单个属性 id = 42stdClass 实例。