Mar*_*ark 2 ruby rspec ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)
这导致1000多个测试在项目中失败.他们失败了以下错误代码:
ArgumentError:
comparison of ActiveSupport::TimeWithZone with nil failed
Run Code Online (Sandbox Code Playgroud)
我试图将方法存根如下,但显然做错了:
before do
allow(Event.any_instance).to receive(:finishes_after_venue_shuts?).and_return(false)
end
Run Code Online (Sandbox Code Playgroud)
用于存根方法并简单地返回false而不是执行代码的正确语法是什么?
提前致谢.
你很接近:)
allow_any_instance_of(Event)
.to receive(:finishes_after_venue_shuts?)
.and_return(false)
Run Code Online (Sandbox Code Playgroud)