将ActiveRecord :: Errors对象设置为nil

时间:2015-06-22 01:54:51

标签: ruby-on-rails unit-testing activerecord tdd

我正在尝试将单元测试添加到我的项目中处理显示错误的部分。

为了在没有ActiveRecord :: Errors对象迭代的情况下测试正确的处理,我试图从其他工作的测试夹具中删除错误对象(而不是单个错误)({{ 1}})。

我曾希望@customer能胜任这项工作,但这会引发错误。

测试用例:

@customer.errors = nil

正在测试的单位(不应该是相关的,但以防万一):

  test "Errors_WhenErrorsObjectNotFound_RaisesNoErrors" do
    log_in_as(@customer)
    @customer.errors = nil
    get :edit, id: @customer
    assert_nothing_raised
  end

生成错误:

<% if errors.count == 0 || errors.nil? %>
  <div class="success">
    <ul>
      <li>Update successful</li>
    </ul>
  </div>
<% else %>
  <div class="error">
    <ul>
      <% errors.full_messages.each do |err| %>
        <li><%= err %></li>
      <% end %>
    </ul>
  </div>
<% end %>

有关如何删除错误对象的任何建议吗?

1 个答案:

答案 0 :(得分:0)

您正在寻找ActiveModel::Errors#clear.

test "Errors_WhenErrorsObjectNotFound_RaisesNoErrors" do
  log_in_as(@customer)
  @customer.errors.clear
  get :edit, id: @customer
  assert_nothing_raised
end