在RSpec中无限次地存根

时间:2015-10-19 22:20:51

标签: ruby-on-rails rspec

RSpec允许按如下方式对潜在请求进行存根 -

expect(@project).to receive(:msg).at_least(n).times

我不知道(并且不关心)@project收到:msg的次数的情况如何?

RSpec中是否存在“无限制”存根,告诉它无论被调用多少次都要为该示例存根?

3 个答案:

答案 0 :(得分:2)

如果你不在乎它有多少次存根,你可以使用allow

allow(@project).to receive(:msg)

答案 1 :(得分:1)

使用MATCH path = (london :Airport{city:'London'})-[:HAS_FLIGHT|FLYING_TO*0..6]->(tokyo :Airport{city:'Tokyo'}) RETURN path;(由@Huy建议)或allow(@project).to receive(:msg)将使该方法存根。

执行@project.stub(:msg)只是让你断言存根被调用了多次。

如果你没有对它做出断言,或者使你的断言一般(例如expect(@project).to receive(:msg)),那么如果方法被调用的话不重要。

您可以在RSpec文档中找到更多信息:

Method Stubs

Expectations

答案 2 :(得分:0)

我今天正在寻找答案。简短的回答是" no",RSpec没有这种无限制的存根。

来自docs

  

在预期邮件时,您可以指定您希望收到邮件的次数。如果您没有指定预期的接收计数,则默认为一次。

如果您确定您的测试将至少调用该方法一次,那么您可以使用:

expect(@project).to receive(:msg).at_least(:once)

如果您不确定该方法是否会被调用,您可以将其反转并使用大量数字:

expect(@project).to receive(:msg).at_most(1000).times