我正在创建测试,但我无法弄清楚为什么从 form_for 创建模型在测试中失败但在真实浏览器中有效。有没有一种简单的方法可以让我了解模型创建中的问题?
更好的是,我是否有一种直接的方法来测试我通过 error_messages_for 访问的错误输出?在这种情况下,我还想添加测试以确保格式错误的表单输出正确的错误。
我正在创建测试,但我无法弄清楚为什么从 form_for 创建模型在测试中失败但在真实浏览器中有效。有没有一种简单的方法可以让我了解模型创建中的问题?
更好的是,我是否有一种直接的方法来测试我通过 error_messages_for 访问的错误输出?在这种情况下,我还想添加测试以确保格式错误的表单输出正确的错误。
您可以使用 访问对象上的验证错误@model.errors
。用于@model.errors.on(:field_name)
获取应用于特定字段的错误消息数组。您还可以@model.errors.invalid?(:field_name)
在测试中使用来断言特定字段触发了错误。
例如:
test "should reject invalid post" do
@p = Post.new
assert !@p.valid?
assert_equal @p.errors.on(:title), 'cannot be blank'
end