[RUBY] Rails Tutorial Test

Einführung

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.

Über das Test-Framework

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?

Über Testtypen

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)

Gerätetest

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.

Integrationstest

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.

  1. Generieren Sie mit der Methode get eine Anmeldeseite (login_path).   →get login_path

  2. Stellen Sie sicher, dass die Anmeldeseitenvorlage ausgewählt ist.   →assert_template 'sessions/new'

  3. 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"}}

  4. 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
  1. Stellen Sie sicher, dass die Anmeldeseitenvorlage ausgewählt ist.   →assert_template 'sessions/new'

  2. Stellen Sie sicher, dass die Fehlermeldung angezeigt wird.   →assert_not flash.empty?

  3. Generieren Sie die Homepage (root_path) mit der Methode get.   →get root_path

  4. Stellen Sie sicher, dass keine Fehlermeldung angezeigt wird.   →assert flash.empty?

Es ist ein Fluss geworden.

Zusammenfassung

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

Rails Tutorial Test
Schienen Tutry
Schienen Tutorial
Schienen Tutry
Deshalb habe ich dieses Mal die Methode "Verknüpfen des Inhalts des Verzeichnisses" übernommen. Ich denke, es wird je nach Zeit und Fall richtig verwendet. Tutorial zu Linux, ln, Linux-Befehlsschienen
Schienen Tutry
Schienen Tutorial
Schienen Tutorial
Schienen-Tutorial Kapitel 1
Rails Tutorial Memorandum 1
Rails Tutorial Memorandum 2
Schienen-Tutorial Kapitel 7
Schienen-Tutorial Kapitel 5
Schienen-Tutorial Kapitel 10
Schienen-Tutorial Kapitel 9
Schienen-Tutorial Kapitel 8
[Anfänger] Rails Tutorial
Schienen Tutorial Cheet Sheet
Rails Tutorial Kapitel 3 Lernen
[Rails] Lernen mit Rails Tutorial
Rails Tutorial Memorandum (Kapitel 3, 3.1)
[Schienen] Test mit RSpec
Rails Tutorial Kapitel 4 Lernen
Rails Tutorial Kapitel 1 Lernen
Rails Tutorial Kapitel 2 Lernen
Schienen Tutorial Fighting Record III
Prüfung
11.1 AccountActivations-Ressource: Rails Tutorial Memorandum-Kapitel 11
Rails Tutorial Records und Memorandum # 0
Prüfung
[Rails] Testcode mit Rspec
Prüfung
Prüfung
[Rails Tutorial Kapitel 4] Ruby mit Rails-Geschmack
[Rails] Informationen zum Rspec-Antworttest
Beheben Sie ActiveRecord :: NoDatabaseError, wenn Sie einen Rails-Test durchführen (Rails-Tutorial, Kapitel 3).
[Rails] Implementierung der Tutorial-Funktion
Grep? Zusammengeschraubt?: Rails Tutorial Notes - Kapitel 8
[Rails Tutorial Kapitel 5] Erstellen Sie ein Layout
Tutorial zum Kauen der Schienen [Kapitel 2 Spielzeuganwendung]
[Rails5] Rspec -Einheitentest beim Verschachteln-
Rails Tutorial (4. Ausgabe) Memo Kapitel 6
[Schienen] Machen wir einen Unit-Test mit Rspec!
[Schienen g. Fehler]
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 10
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 7
Rails Grundlagen