【发布时间】: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