如何访问RSpec文件中的验证错误消息?

时间:2012-10-23 15:17:44

标签: ruby ruby-on-rails-3 rspec

我正在为我的第一个Rails应用程序编写一些代码,似乎无法找到查找验证错误的最佳方法,这样我就可以轻松地将它们放入,而不必重复自己。

我想转此:

let(:error_messages) { page.find 'div#error_explanation ul' }
specify { error_messages.should have_content "Name can't be blank" }
specify { error_messages.should have_content "Email can't be blank" }
specify { error_messages.should have_content "Email is invalid" }
specify { error_messages.should have_content "Password can't be blank" }
specify { error_messages.should have_content "Password is too short (minimum is 6 characters)" }
specify { error_messages.should have_content "Email is invalid" }

这样的事情:

let(:error_messages) { page.find 'div#error_explanation ul' }
specify { error_messages.should have_content "errors.name_blank" }
specify { error_messages.should have_content "errors.email_blank" }
specify { error_messages.should have_content "errors.email_invalid" }
specify { error_messages.should have_content "errors.password_invalid" }
specify { error_messages.should have_content "errors.password_short" }
specify { error_messages.should have_content "errors.email_invalid" }

谢谢!

1 个答案:

答案 0 :(得分:1)

您是否已经在测试模型验证?如果是这样,请道歉。

否则,您应该考虑使用errors_on帮助程序并自行测试模型,如here on rspec's relish pages所述。这种方法既可以更快地执行,也可以在标记更改时更轻松。

describe ValidatingWidget do
  it "fails validation with no name (using error_on)" do
    ValidatingWidget.new.should have(1).error_on(:name)
  end
end