1
私のモデルは、関連付けられているモデルのいずれかに関する検証を持っています。この検証の結果、モデルの私のrspecテストが失敗しました。検証を実行しようとしたとき、それはnew_offer_range
ためnew_offer is nil
を言うのでアクティブレコードモデルのRspec shoulda matcherテストは、関連付けられたモデルの検証のために失敗します
describe NewOfferRange do
it { is_expected.to validate_presence_of(:new_offer) }
it { is_expected.to validate_presence_of(:from) }
it { is_expected.to validate_presence_of(:to) }
end
class NewOfferRange < ApplicationRecord
validates :new_offer, :from, :to, presence: true
validate :unique_for_date_ranges
delegate :hotel, to: :new_offer
def unique_for_date_ranges
if hotel.new_offers.joins(:new_offer_ranges)
.where('new_offer_ranges.from < ? AND new_offer_ranges.to > ?', to, from)
.where.not(new_offer_ranges: { id: id })
.count
.positive?
errors.add(:base, 'Ya hay otra oferta para esas fechas.')
end
end
これらのテストは失敗します。
new_offer_range
のファクトリを定義しているモデルファクトリでもFactoryGirlを使用していますが、これには対応する参照があります。 この検証エラーが発生しないように、マッハッシャーにそのファクトリを使用するように指示することはできますか?問題を解決する必要があります
subject { create :new_offer_range }
it
前-blocksを設定
ありがとう、ちょうどこの答えを読む前にそれを試み、それを投稿しようとしていた。 –