Bien que ce soit sur le terrain, je pense que le développement se déroule généralement selon le flux suivant. (1) Conception → (2) Codage de traitement → (3) Codage de test → (4) Test unitaire, etc ...
Mais dans le tutoriel Rails, (1) Conception → (2) Codage de test → (3) Codage de traitement… Cela a été expliqué dans le flux. J'ai appris un peu, donc je le posterai sous forme d'article.
article | Contenu |
---|---|
OS | aws #35-Ubuntu SMP(Cloud9) |
Ruby | ruby 2.6.3p62 (2019-04-16 revision 67580) |
Ruby On Rails | Rails 6.0.3 |
Voici un exemple de codage à partir de la source de test lors de l'ajout d'une nouvelle page à propos (résumé) à une application avec des paramètres de routage et de contrôleur.
config/route.rb
Rails.application.routes.draw do
get 'static_pages/home'
get 'static_pages/help'
root 'static_pages#home'
* Le routage de la page d'aperçu n'a pas encore été défini.
end
app/controller/static_pages_controller.rb
class StaticPagesController < ApplicationController
def home
end
def help
end
* L'action sur la page de résumé n'a pas encore été définie.
end
Étape 1) Ici, écrivez un test pour la page nouvellement ajoutée à l'avance.
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 ※~~~~À partir de là, remplissez le test sur la page de résumé en supposant.~~~~
13 test "should get about" do
14 get static_pages_about_url
15 assert_response :success
16 end
end
Étape 2) Essayez de lancer le test (1ère fois = erreur car le processus n'a pas encore été décrit)
$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
J'ai eu une erreur . </ font>
Étape 3) De ce qui précède, le chemin ne passe pas, alors vérifiez le routage.
config/route.rb
Rails.application.routes.draw do
get 'static_pages/home'
get 'static_pages/help'
get 'static_pages/about'← Ajouté ici ☆
root 'static_pages#home'
end
Étape 4) Exécutez le test (2ème fois = une erreur se produira sur l'hypothèse)
$ 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
J'ai encore une erreur. </ font>
Étape 5) À partir de l'erreur ci-dessus, examinez le contrôleur car l'action en est la cause.
app/controller/static_pages_controller.rb
class StaticPagesController < ApplicationController
def home
end
def help
end
def about ← Ajouté ici ☆
end
end
Étape 6) Essayez d'exécuter plus de tests (3e fois = ce qui se passe ...)
$ 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
J'ai encore une erreur. La prochaine fois, le libellé semble être différent ... </ font>
Étape 7) À partir de l'erreur ci-dessus, il semble que le modèle soit la cause, alors ajoutez une vue.
touch app/views/static_pages/about.html.erb
Étape 8) Exécutez le test (4ème fois = réussite du test normal)
$ rails test
...
3 runs, 3 assertions, 0 failures, 0 errors, 0
Cela s'est bien passé ... C'est la base des bases, mais j'ai senti que cela devrait être supprimé, y compris le refactoring. </ font>
Tutoriel. Commencez par un test
Recommended Posts