Rails Tutorial 6.0 Kapitel 7 7.3.4 Test zum Zeitpunkt des Ausfalls Aufzeichnung des Stolperns in der letzten Übung
"Schreiben Sie einen Test für die in Listing 7.20 implementierte Fehlermeldung. Ich überlasse es Ihnen, sie im Detail zu testen. Ich habe eine Vorlage für Listing 7.25 als Referenz bereitgestellt."
Verwenden Sie assert_select Es ist eine gute Idee, die HTML-Struktur auf falsche login-spezifische Elemente zu überprüfen.
Inhalt des unmittelbar zuvor erstellten Teils (Dieser Inhalt wird in new.html.erb eingefügt.)
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 %>
Wenn @ user.errors vorhanden ist, Ein div-Tag mit einer bestimmten Klasse ("alert" & "alert-risk"), id ("error_explanation") wird erweitert
Solange dies im endgültigen HTML-Code enthalten ist, der an den Browser übergeben wird, assert_select'Selector (Klasse: div.class, id: div # id) ' Bestätigen Sie es mit
Das ausgefüllte Formular lautet wie folgt
/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
Die durch assert_select verifizierte Struktur, Wird in den Google Chrome-Entwicklertools visuell angezeigt
das ist alles
Verwenden Sie "" und "" richtig Ich bin der Meinung, dass "" bevorzugt wird, wenn explizit angegeben wird, dass es sich um eine Zeichenfolge handelt. Der Selektor wird als '' 'angegeben.
Recommended Posts