【问题标题】:How to display controller error messages in your Rails tests?如何在 Rails 测试中显示控制器错误消息?
【发布时间】:2017-03-19 02:24:49
【问题描述】:

我正在添加一些测试(在 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 始终是 []。我对添加的断言很好,但我也在考虑将错误消息添加到可选的测试失败消息中。

【问题讨论】:

  • 在您的控制器中是否有@article 实例变量,可能类似于@article = Article.create(...)

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


【解决方案1】:
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 块中添加错误的显示 :)

【讨论】:

  • assigns 已提取到 gem。要继续使用它,请将 gem 'rails-controller-testing' 添加到您的 Gemfile。 ;-)
猜你喜欢
  • 1970-01-01
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 1970-01-01
  • 2011-09-21
  • 2013-07-10
相关资源
最近更新 更多