gpt4 book ai didi

ruby-on-rails - RSpec - stub 实例方法

转载 作者:行者123 更新时间:2023-12-04 03:39:08 25 4
gpt4 key购买 nike

我在项目中间添加了以下方法:

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 而不是执行代码的正确语法是什么?

提前致谢。

最佳答案

你很接近:)

allow_any_instance_of(Event)
.to receive(:finishes_after_venue_shuts?)
.and_return(false)
但是使用 allow_any_instance_of被认为是一种不好的做法,所以更合适的是使用 double:
let(:event) { instance_double(Event, finishes_after_venue_shuts?: false) }

allow(Event).to receive(:new).and_return(event)

关于ruby-on-rails - RSpec - stub 实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42000119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com