rails rspec预计自定义验证失败

Nic*_*o77 5 rspec ruby-on-rails rspec-rails

运行我的rspec期望使用自定义验证器时出现此错误.

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

失败了

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:
Run Code Online (Sandbox Code Playgroud)

这似乎只是我的自定义验证的问题.看到这个型号:

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
Run Code Online (Sandbox Code Playgroud)

使用:Rails 3.2.11 Rspec-rails 2.12.2

rai*_*inz 10

你有一个错字.在字符串中添加句点:

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

注意:您目前符合您的期望:

'验证失败:此问题不再有效'

但需要:

"验证失败:此问题不再有效."

以便它与您的验证字符串匹配:

"这个问题不再活跃了."