Während Sie das Rails-Tutorial studieren, wird in Kapitel 3 beschrieben, wie wichtig "automatisiertes Testen" ist. Es scheint, dass es viele Kontroversen darüber gibt, wie man einen Test schreibt, aber in diesem Artikel habe ich zusammengefasst, was ich für besser halte, den Test auf meine eigene Weise zu unterdrücken.
Es gibt verschiedene Arten von Test-Frameworks, von denen jedes seine eigenen Merkmale aufweist, z. B. das Schreiben von Code. Hier werden die beiden Haupttypen von Frameworks vorgestellt.
Referenziert → 6 beliebte Rails-Test-Frameworks! Welche würden Sie verwenden, RSpec oder Minitest?
Minitest -Rails Standard-Framework. ・ Die Lernkosten sind relativ niedrig. -Es wird auch im Rails-Tutorial verwendet. -Es wird gesagt, dass die Verarbeitungsgeschwindigkeit relativ schnell ist. -Die Standardfunktion ist das erforderliche Minimum. ・ Kleine Menge Code, einfach
Rspec ・ Geschrieben in natürlicher Sprache von Menschen, die einander nahe stehen. ・ Hohe Auslastung. ・ Es braucht Zeit, um sich daran zu gewöhnen. -Es wird gesagt, dass die Verarbeitungsgeschwindigkeit langsamer als Minitest ist.
Beide scheinen Vor- und Nachteile zu haben. Ist es nicht das Beste für Anfänger, von Minitest aus einzutreten und dann Rspec zu lernen?
Abhängig von der Referenzliteratur kann es zwei oder mehr Typen geben, aber dieses Mal werden wir zwei Arten von Tests einführen.
Referenziert → Rails Testing Guide [Software test-wilki](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7% E3% 82% A2% E3% 83% 86% E3% 82% B9% E3% 83% 88)
Tests in kleinen Einheiten wie Funktionen und Methoden durchgeführt. Überprüfen Sie das Verhalten des Modells und zeigen Sie den Helfer allein an.
Beispiel:
test/helpers/application_helper_test
test "full title helper" do
assert_equal full_title, "Ruby on Rails Tutorial Sample App"
end
assert ist ein Code, der ein Objekt oder einen Ausdruck auswertet und prüft, ob das erwartete Ergebnis (true) erhalten wird. Das obige bestätigt, dass assert_equal einen full_title hat, der genau mit der "Ruby on Rails Tutorial Sample App" übereinstimmt.
test/models/user_test.rb
test "name should not be too long" do
@user.name = "a" * 51
assert_not @user.valid?
end
assert_not ist der Code, der prüft, ob false im Gegensatz zu assert erhalten wird. Das Obige überprüft, ob der Benutzer ungültig ist, wenn der Name des Benutzers 51 Zeichen umfasst.
Ein Test, der Programme kombiniert. Überprüfen Sie, ob die einzelnen Funktionen korrekt verknüpft sind, vorausgesetzt, der Benutzer arbeitet tatsächlich.
Beispiel:
test/integration/users_login_test
test "login with valid email/invalid password" do
get login_path
assert_template 'sessions/new'
post login_path,params: {session: { email: @user.email,
password: "invalid"}}
assert_not is_logged_in?
assert_template 'sessions/new'
assert_not flash.empty?
get root_path
assert flash.empty?
end
Das Obige wird für Benutzer getestet, die ein ungültiges Passwort eingegeben haben.
Generieren Sie mit der Methode get eine Anmeldeseite (login_path). →get login_path
Stellen Sie sicher, dass die Anmeldeseitenvorlage ausgewählt ist. →assert_template 'sessions/new'
Senden Sie eine gültige E-Mail-Adresse und ein ungültiges Passwort an login_path. →post login_path,params: {session: { email: @user.email,password: "invalid"}}
Stellen Sie sicher, dass der Benutzer nicht angemeldet ist. →assert_not is_logged_in?
Die Methode is_logged_in? Wird definiert durch:
test/test_helper.rb
#Gibt true zurück, wenn der Testbenutzer angemeldet ist
def is_logged_in?
!session[:user_id].nil?
end
Stellen Sie sicher, dass die Anmeldeseitenvorlage ausgewählt ist. →assert_template 'sessions/new'
Stellen Sie sicher, dass die Fehlermeldung angezeigt wird. →assert_not flash.empty?
Generieren Sie die Homepage (root_path) mit der Methode get. →get root_path
Stellen Sie sicher, dass keine Fehlermeldung angezeigt wird. →assert flash.empty?
Es ist ein Fluss geworden.
Um ehrlich zu sein, bin ich mir nicht sicher, ob ich es nach Abschluss des Rails-Tutorials selbst testen werde. Es scheint auch, dass Sie gefragt werden, wie streng der Test durchgeführt wird. Ich fand es wichtig, sich an die Zahlen zu gewöhnen.
Recommended Posts