簡體   English   中英

RSpec - 存根實例方法

[英]RSpec - stubbing an instance method

我在項目中間添加了以下方法:

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)

你也可以這樣做:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM