如何在 Rails 测试中显示控制器错误消息?
How to display controller error messages in your Rails tests?
我正在添加一些测试(在 http://guides.rubyonrails.org/v3.2/testing.html 之后),并希望在我的控制器测试中添加一些反馈,以说明为什么我的测试失败是因为我缺少一些验证等。
举个简单的例子:
test "should create article" do
assert_difference('Article.count') do
post articles_url, params: { article: { body: 'Rails is awesome!', title: 'Hello Rails' } }
end
assert_redirected_to article_path(Article.last)
end
假设我的 Article
模型在需要 user_id
的地方进行了验证。这个测试只是失败了。我在这里找到了另一个 post,建议如下:
assert_equal([], assigns(:article).errors.full_messages)
我一定是遗漏了一些东西,或者我对测试语法等方面的经验不足,这可能是问题所在,因为我无法让它工作 - assigns(:article).errors.full_messages
始终是 []
,即使验证失败也是如此.我对添加的断言很好,但我也在考虑将错误消息添加到可选的测试失败消息中。
test "should create article" do
assert_difference('Article.count') do
post articles_url, params: { article: { body: 'Rails is awesome!', title: 'Hello Rails' } }
puts assigns(:article).errors.full_message
end
assert_redirected_to article_path(Article.last)
end
诀窍是在 do 块中添加错误显示 :)
我正在添加一些测试(在 http://guides.rubyonrails.org/v3.2/testing.html 之后),并希望在我的控制器测试中添加一些反馈,以说明为什么我的测试失败是因为我缺少一些验证等。
举个简单的例子:
test "should create article" do
assert_difference('Article.count') do
post articles_url, params: { article: { body: 'Rails is awesome!', title: 'Hello Rails' } }
end
assert_redirected_to article_path(Article.last)
end
假设我的 Article
模型在需要 user_id
的地方进行了验证。这个测试只是失败了。我在这里找到了另一个 post,建议如下:
assert_equal([], assigns(:article).errors.full_messages)
我一定是遗漏了一些东西,或者我对测试语法等方面的经验不足,这可能是问题所在,因为我无法让它工作 - assigns(:article).errors.full_messages
始终是 []
,即使验证失败也是如此.我对添加的断言很好,但我也在考虑将错误消息添加到可选的测试失败消息中。
test "should create article" do
assert_difference('Article.count') do
post articles_url, params: { article: { body: 'Rails is awesome!', title: 'Hello Rails' } }
puts assigns(:article).errors.full_message
end
assert_redirected_to article_path(Article.last)
end
诀窍是在 do 块中添加错误显示 :)