7

カスタム バリデータを使用して rspec の期待値を実行すると、このエラーが発生します。

expect {@ua.save!}.to  raise_error(ActiveRecord::RecordInvalid,'Validation failed: This question is no longer active')

で失敗します

expected ActiveRecord::RecordInvalid with "Validation failed: This question is no longer active", got #<ActiveRecord::RecordInvalid: Validation failed: This question is no longer active.> with backtrace:

これは、私のカスタム検証にのみ問題があるようです。このモデルを参照してください:

class UserAnswer < ActiveRecord::Base
  belongs_to :user
  belongs_to :question
  validate :questionIsActive?

  private

  def questionIsActive?
    errors.add(:base, "This question is no longer active.") if !self.question.is_active?
  end
end

使用: Rails 3.2.11 Rspec-rails 2.12.2

4

1 に答える 1

15

タイプミスがあります。文字列にピリオドを追加します。

expect {@ua.save!}.to  raise_error(ActiveRecord::RecordInvalid,'Validation failed: This question is no longer active.')

注:現在、あなたは期待しています:

「検証に失敗しました: この質問は現在アクティブではありません」

しかし必要:

「検証に失敗しました: この質問は現在アクティブではありません。」

検証文字列と一致するように:

「この質問はもうアクティブではありません。」

于 2013-02-05T18:29:56.213 に答える