【问题标题】:Stub Active Record count with parameter带参数的 Stub Active Record 计数
【发布时间】:2015-06-04 21:59:35
【问题描述】:

我正在努力弄清楚如何存根以下内容:

def max_post_limit
    Post.on(date).count > some_limit
end

我正在尝试存根 Post... 部分,而不是方法。 到目前为止,我已经尝试了以下和类似的变体。全部返回 0 或 1。

before do 
    Post.stubs(:on).returns([])
    Post.stubs.(:on).with(date).returns([])
    Post.stubs.(:count).returns(some_limit)
end

任何建议将不胜感激,谢谢。

【问题讨论】:

  • letz 的解决方案应该可以工作,但是当您需要存根调用链时,通常表明类之间的接口可以改进。在这种情况下,您可以提取一个方法Post.count_on_date(date),然后很容易存根。
  • 测试套件使用的是 mocha,所以我走错了路,抱歉。我接受了您的建议并创建了一个 Post.created_on(date) 方法,现在正在尝试: post = Post.new post.expects(:created_on).with(date).returns(123) 但是,错误是 1 的 0 个参数。任何建议正确传递日期变量?我以为with 正在这样做。好像没有?
  • created_on 是一个类方法,但看起来你正在存根一个实例。我不确定 mocha 语法,在 RSpec 中应该是 allow(Post).to receive(:created_on).with(...).and_return(...)

标签: ruby-on-rails ruby testing rspec stubs


【解决方案1】:

尝试:

allow(Post).to receive_message_chain(:on, :count) { 123 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    相关资源
    最近更新 更多