[RUBY] Pour implémenter, écrivez le test puis codez le processus

arrière-plan </ font>

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.

environnement </ font>

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

pris en charge </ font>

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>

Références </ font>

Tutoriel. Commencez par un test

Recommended Posts