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.
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 |
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>
Tutorial. Beginnen Sie mit einem Test
Recommended Posts