有没有可能做这样的事情???
allow_any_instance_of(Object).to receive(:foo).and_return("hello #{instance.id}")
我可以根据实例返回消息吗?
最佳答案
是的,使用匹配器的“ block ”形式,它使您可以访问实例作为 block 的形式参数。您还需要确保 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
关于ruby-on-rails - Rspec allow_any_instance_of 返回实例 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109054/