Rspec allow_any_instance_of返回实例ID

时间:2015-12-05 18:09:58

标签: ruby-on-rails ruby ruby-on-rails-3 rspec rspec-rails

是否可以做这样的事情?

allow_any_instance_of(Object).to receive(:foo).and_return("hello #{instance.id}")

我可以根据实例返回消息吗?

2 个答案:

答案 0 :(得分:5)

是的,使用匹配器的“块”形式,它允许您访问实例作为块的形式参数。您还需要确保Object(或您传递给allow...的任何类)实现:foo(或您指定的任何方法)作为实例方法,或{{1会引发错误。同样,当然,您还需要确保allow...也已实施。

以下是使用id本身的一些示例代码:

Object

答案 1 :(得分:0)

使用factory_girlfabrication之类的gem来生成测试对象。<​​/ p>

那会让你做...

this_object = Fabricate(:object)
expect(this_object).to receive(:foo).and_return("hello #{this_object.id}")