加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – stub_chain和should_receive

发布时间:2020-12-16 19:54:56 所属栏目:百科 来源:网络整理
导读:我试图测试一个方法调用链中的一个方法获取一个特定的参数.在下面的代码中,例如MyModel必须接收方法offset的参数0.不幸的是,下面的代码不起作用.似乎不可能混合使用should_receive和stub_chain.我该如何解决?我正在使用RSpec 2. MyModel.should_receive(:of
我试图测试一个方法调用链中的一个方法获取一个特定的参数.在下面的代码中,例如MyModel必须接收方法offset的参数0.不幸的是,下面的代码不起作用.似乎不可能混合使用should_receive和stub_chain.我该如何解决?我正在使用RSpec 2.
MyModel.should_receive(:offset).with(0).stub_chain(:tag_counts,:offset,:limit,:order).and_return([]) # does not work!

我试图测试的代码:

tags = taggable.tag_counts.offset(page-1).limit(per_page).where(*where_clause).order("count DESC")

更新

我还发布了RSPec Google Group的问题,David(RSpec的创始人)回答了(感谢David):http://groups.google.com/group/rspec/browse_thread/thread/6b8394836d2390b0?hl=en

解决方法

这是我现在所做的一个规范中的一个例子.这有点不方便(原因很多行),但它的工作原理:
SearchPaginationModel.stub(:tag_counts) { SearchPaginationModel }
SearchPaginationModel.should_receive(:offset).with(0) { SearchPaginationModel }
SearchPaginationModel.stub_chain(:limit,:where,:order) { [] }
SearchPaginationModel.stub_chain(:tag_counts,:count).and_return(1)
SearchPaginationModel.search_tags(:page => "1")

这样就可以设置真正偏移0的SearchPaginationModel.tag_counts.offset(0).limit(X).where(X).order(X)中的测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读