是否可以做这样的事情?
allow_any_instance_of(Object).to receive(:foo).and_return("hello #{instance.id}")
我可以根据实例返回消息吗?
答案 0 :(得分:5)
是的,使用匹配器的“块”形式,它允许您访问实例作为块的形式参数。您还需要确保Object
(或您传递给allow...
的任何类)实现:foo
(或您指定的任何方法)作为实例方法,或{{1会引发错误。同样,当然,您还需要确保allow...
也已实施。
以下是使用id
本身的一些示例代码:
Object
答案 1 :(得分:0)
使用factory_girl
或fabrication
之类的gem来生成测试对象。</ p>
那会让你做...
this_object = Fabricate(:object)
expect(this_object).to receive(:foo).and_return("hello #{this_object.id}")