Вот мой тест на неудачное редактирование.
require 'test_helper'
class UsersEditTest < ActionDispatch::IntegrationTest
def setup
@user = users(:michael)
end
test 'unsuccesful edit' do
get edit_user_path(@user)
assert_template 'users/edit'
patch user_path(@user), params: { user: {name: '',
email: 'foo@invalid',
password: "foo",
password_confirmation: 'bar' } }
assert_select 'div.alert.alert-danger', 'The form contains 4 errors.'
assert_select 'div.alert', 4
assert_template 'users/edit'
end
end
Вот мой взгляд
<% provide(:title, "Edit user") %>
<% provide(:button_text, 'Save Changes') %>
<h1>Update your profile</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: @user %>
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.submit yield(:button_text), class: "btn btn-primary" %>
<% end %>
<div class="gravatar_edit">
<%= gravatar_for @user %>
<a href="http://gravatar.com/emails" target="_blank" rel='noopener'>change</a>
</div>
</div>
</div>
Вот мой взгляд 'shared / error_messages'
<% if @user.errors.any? %>
<div id="error_explanation">
<div class="alert alert-danger">
The form contains <%= pluralize(@user.errors.count, "error") %>.
</div>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
Я пытаюсь проверить количество ошибок, представленных в форме. С моим тестом я ожидаю 4 ошибки, но мой тест продолжает терпеть неудачу, потому что фактический 1. 1. 1010 *
Есть ли другой метод подтверждения, который я должен использовать.