【发布时间】:2016-03-13 20:39:28
【问题描述】:
我正在尝试编写规范来测试某些类调用一堆 activerecord 对象(由范围找到)上的方法。
这不起作用:
#someworker_spec.rb
10.times.map { create(:foo) }.each { |f| expect(f).to receive(:bar)
SomeWorker.perform
#someworker.rb
class SomeWorker
Foo.some_scope.each(&:bar)
end
因为activerecord返回的是新的对象实例,所以activerecord返回的对象实例永远不会收到那个方法。
我知道我可以简单地存根 some_scope 方法并返回对它们的期望值,但这似乎很脆弱。我宁愿检查正确的foo 对象是否接收该方法。有没有办法让我在上面尝试做的事情?
【问题讨论】:
标签: ruby-on-rails activerecord rspec