RSpec - 存根类方法

时间:2017-02-02 10:45:49

标签: ruby-on-rails ruby rspec mocking

我已将以下方法添加到项目中间:

def finishes_after_venue_shuts?
  return unless venue && finish
  day = regular_day ? regular_day : start.strftime('%a').downcase
  finish > venue.openingtimes.where(default_day: day).pluck(:finish)[0]
end

这导致1000多个测试在项目中失败。他们失败并出现以下错误代码:

ArgumentError:
  comparison of ActiveSupport::TimeWithZone with nil failed

我试图按如下方式删除该方法,但显然做错了:

before do
  allow(Event.any_instance).to receive(:finishes_after_venue_shuts?).and_return(false)
end

用于存根方法并简单地返回false而不是执行代码的正确语法是什么?

提前致谢。

2 个答案:

答案 0 :(得分:6)

你很亲密:)

allow_any_instance_of(Event)
  .to receive(:finishes_after_venue_shuts?)
  .and_return(false)

答案 1 :(得分:0)

你也可以这样做:

Event.any_instance.stub(:finishes_after_venue_shuts).and_return(false)