我使用的是Rails 3.0.4和RSpec 2.5.例如,在我的控制器中,我使用命名范围
@collection = GuestbookEntry.nonreplies.bydate.inclusive.paginate( :page => params[:page],:conditions => { ... })
在我的测试中,我想要能够模拟这样一个查询的结果,而不是文字.我不认为这样做是有道理的
GuestbookEntry.stub_chain(:nonreplies,:bydate,...).and_return(...)
因为这个测试将在我决定重新排序命名范围的那一刻失败.
使用Rails 2.3和RSpec 1.x,这很好:我可以写
GuestbookEntry.should_receive(:find).with(:all,:conditions => { ... })
并且上述呼叫将被捕获并被正确处理.然而,使用Rails 3,由于某种原因,这不再起作用.
为什么?如何对嵌套范围的结果设置期望或存根?由于Rails 3的ActiveModel中的所有内容都是一个命名范围(感谢ARel),所以这必须以某种方式进行,否则测试确实很脆弱.
谢谢!
更新:另见issue report on GitHub.
解决方法
原文地址:https://www.jb51.cc/ruby/271360.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。