有可能做这样的事情吗???
allow_any_instance_of(Object).to receive(:foo).and_return("hello #{instance.id}")
我可以根据实例返回消息吗?
是的,使用匹配器的“块”形式,该形式使您可以访问实例作为块的形式参数。您还需要确保Object
(或您要传递给的任何类allow...
)实现:foo
(或您指定的任何方法)作为实例方法,否则allow...
会引发错误。同样,当然,您需要确保也id
已实现。
这是一些使用Object
自身的示例代码:
class Object def id 'bar' end def foo end end describe '' do it '' do allow_any_instance_of(Object).to receive(:foo) { |o| "hello #{o.id}" } puts Object.new.foo end end