Tutoriel Rails 6.0 Chapitre 7 7.3.4 Test au moment de l'échec Record de trébuchement lors du dernier exercice
"Ecrivez un test pour le message d'erreur implémenté dans le Listing 7.20. Je vous laisse le soin de le tester en détail. J'ai fourni un modèle pour le Listing 7.25 pour votre référence."
Utilisez assert_select C'est une bonne idée de vérifier la structure HTML pour des éléments spécifiques à la connexion incorrects.
Contenu du partiel créé juste avant (Ce contenu est inséré dans new.html.erb)
ruby:/sample_app/app/views/shared/_error_messages.html.erb
<% 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 %>
Si @ user.errors existe, Une balise div contenant une classe spécifique ("alert" & "alert-danger"), id ("error_explanation") est développée
Tant que cela est inclus dans le code HTML final transmis au navigateur, assert_select'Selector (classe: div.class, id: div # id) ' Confirmez-le avec
Le formulaire rempli est le suivant
/sample_app/test/integration/users_signup_test.rb
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
test "invalid signup information" do
assert_no_difference 'User.count' do
post users_path, params: { user: { name: "",
email: "user@invalid",
password: "foo",
password_confirmation: "bar"} }
end
assert_template 'users/new'
assert_select 'div.alert'
assert_select 'div.alert-danger'
assert_select 'div#error_explanation'
end
end
La structure vérifiée par assert_select, Visuellement affiché dans les outils de développement de Google Chrome
c'est tout
Utilisez correctement "" et "" Je pense que "" est préférable pour indiquer explicitement qu'il s'agit d'une chaîne de caractères, Le sélecteur est spécifié comme '' '
Recommended Posts