[RUBY] Schreiben Sie zur Implementierung den Test und codieren Sie den Prozess

Hintergrund </ font>

Obwohl es auf dem Gebiet ist, denke ich, dass die Entwicklung normalerweise gemäß dem folgenden Ablauf verläuft. (1) Design → (2) Verarbeitungscodierung → (3) Testcodierung → (4) Komponententest usw.

Aber im Rails-Tutorial (1) Design → (2) Testcodierung → (3) Verarbeitungscodierung… Es wurde im Fluss erklärt. Ich habe ein wenig gelernt, deshalb werde ich es als Artikel veröffentlichen.

Umgebung </ font>

Artikel Inhalt
OS aws #35-Ubuntu SMP(Cloud9)
Ruby ruby 2.6.3p62 (2019-04-16 revision 67580)
Ruby On Rails Rails 6.0.3

unterstützt </ font>

Das folgende Beispiel zeigt die Codierung aus der Testquelle, wenn einer App mit Routing- und Controller-Einstellungen eine neue Info-Seite (Übersichtsseite) hinzugefügt wird.

config/route.rb


Rails.application.routes.draw do
  get 'static_pages/home'
  get 'static_pages/help'
  root 'static_pages#home'
* Das Routing der Übersichtsseite wurde noch nicht festgelegt.
end

app/controller/static_pages_controller.rb


class StaticPagesController < ApplicationController
  def home
  end

  def help
  end
   
* Die Aktion auf der Zusammenfassungsseite wurde noch nicht festgelegt.
end

Schritt 1) Schreiben Sie hier vorab einen Test für die neu hinzugefügte Seite.

test/static_pages_controller_test.rb


require 'test_helper'

class StaticPagesControllerTest < ActionDispatch::IntegrationTest
1   
2   test "should get home" do
3     get static_pages_home_url
4     assert_response :success
5   end
6 
7   test "should get help" do
8     get static_pages_help_url
9     assert_response :success
10  end
11
12 ※~~~~Füllen Sie von hier aus den Test auf der Übersichtsseite aus.~~~~
13  test "should get about" do
14    get static_pages_about_url
15    assert_response :success
16  end

end 

Schritt 2) Versuchen Sie, den Test auszuführen (1. Mal = Fehler, da der Prozess noch nicht beschrieben wurde).

$rails test

Error:
StaticPagesControllerTest#test_should_get_about:
NameError: undefined local variable or method `static_pages_about_url' 
..

Finished in 2.157942s, 1.3902 runs/s, 0.9268 assertions/s.
3 runs, 2 assertions, 0 failures, 1 errors, 0 skips

Ich habe einen Fehler erhalten. </ font>

Schritt 3) Von oben wird der Pfad nicht übergeben. Überprüfen Sie daher das Routing.

config/route.rb


Rails.application.routes.draw do
  get 'static_pages/home'
  get 'static_pages/help'
  get 'static_pages/about'← Hier hinzugefügt ☆
  root 'static_pages#home'
end

Schritt 4) Führen Sie den Test aus (2. Mal = unter der Annahme tritt ein Fehler auf)

$ rails test

Error:
StaticPagesControllerTest#test_should_get_about:
AbstractController::ActionNotFound: The action 'about' could not be found for StaticPagesController…
3 runs, 2 assertions, 0 failures, 1 errors, 0 skips

Ich habe erneut einen Fehler erhalten. </ font>

Schritt 5) Überprüfen Sie anhand des obigen Fehlers den Controller, da die Aktion die Ursache ist.

app/controller/static_pages_controller.rb


class StaticPagesController < ApplicationController
  def home
  end

  def help
  end

def about ← Hier hinzugefügt ☆
  end

end

Schritt 6) Versuchen Sie, weitere Tests durchzuführen (3. Mal = was passiert ...)

$ rails test

Error:
StaticPagesControllerTest#test_should_get_about:
ActionController::MissingExactTemplate: StaticPagesController#about is missing a template for request formats: ..
3 runs, 2 assertions, 0 failures, 1 errors, 0 skips

Ich habe erneut einen Fehler erhalten. Der Wortlaut scheint beim nächsten Mal anders zu sein ... </ font>

Schritt 7) Aufgrund des obigen Fehlers scheint die Vorlage die Ursache zu sein. Fügen Sie daher eine Ansicht hinzu.

touch app/views/static_pages/about.html.erb

Schritt 8) Führen Sie den Test aus (4. Mal = normaler Testdurchlauf)

$ rails test

...
3 runs, 3 assertions, 0 failures, 0 errors, 0 

Es ist gut gelaufen ... Es ist das Grundprinzip, aber ich hatte das Gefühl, dass es unterdrückt werden sollte, einschließlich Refactoring. </ font>

Referenzen </ font>

Tutorial. Beginnen Sie mit einem Test

Recommended Posts