如何在Rails测试中显示控制器错误消息?

时间:2017-03-19 02:24:49

标签: ruby-on-rails unit-testing minitest

我正在添加一些测试(在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是必需的。这个测试失败了。我在这里发现了另一篇文章,其中包含以下建议:

assert_equal([], assigns(:article).errors.full_messages)

我一定是缺少某些东西或者我在测试语法等方面缺乏经验可能是问题,因为我无法使其工作 - 即使验证失败,assigns(:article).errors.full_messages始终是[]。我对添加的断言很好,但我也想将错误消息添加到可选的测试失败消息中。

1 个答案:

答案 0 :(得分:0)

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块中添加错误的显示:)