我今天遇到了RSpec规范和ActiveRecord范围的问题。
我有一个执行类似于
的代码的控制器@customers = Customer.active.with_counts.order('name asc')
'active'和'with_counts'是Customer模型的范围。
我曾经有过像这样使用stub_chain的规范:
Customer.stub_chain(:with_counts, :order).with('name asc') { [mock_customer] }
我没想到这会成功,因为控制器包含了“主动”范围,但令我惊讶的是它成功了,没有任何问题。
我想在真正的Customer类上调用'active'作用域并返回stub_chain类连接的东西,因此它似乎可以工作。
当我链接ActiveRecord范围时,如何编写规范以避免此类问题?
请注意,控制器中的实际调用并不总是使用两个作用域 - 它依赖于过滤,因此只需将所有内容包装在新方法中,这不是我热衷的方式。