gpt4 book ai didi

ruby-on-rails - stub_chain 和 should_receive

转载 作者:行者123 更新时间:2023-12-03 23:53:51 25 4
gpt4 key购买 nike

我正在尝试测试方法调用链中的方法之一是否获得特定参数。例如,在下面的代码中,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, :where, :count).and_return(1)
SearchPaginationModel.search_tags(:page => "1")

例如,在 SearchPaginationModel.tag_counts.offset(0).limit(X).where(X).order(X) 中进行测试真的 offset 0 被设置。

关于ruby-on-rails - stub_chain 和 should_receive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com