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 回答