在使用any_instance的情况下,如何让stub返回调用它的实例?

时间:2012-10-11 10:47:58

标签: ruby testing rspec

例如,我有A类。

class A
end

并希望在stub中使用stubbed方法返回该类的实例。

A.any_instance.stub(:my_method).and_return(<here is the same instance on which my_method is called should got>)

可以在RSpec中做出类似的东西吗?

1 个答案:

答案 0 :(得分:1)

这将为您解决问题:

A.any_instance.stub(:my_method) do |*args|
    instance = RSpec::Mocks::space.send(:receivers).last
end

我在这里从rspec代码中挖出了这个:rspec github code

P.S。 :这完全取决于rspec实现,并可能在将来发生变化。这里的背景有点复杂。我可以在将来添加它。