[RUBY] Test du tutoriel sur les rails

introduction

Au fur et à mesure que vous apprenez le didacticiel Rails, le chapitre 3 décrit l'importance des «tests automatisés». Il semble qu'il y ait beaucoup de controverse sur la façon d'écrire un test, mais dans cet article, j'ai résumé ce que je pense qu'il vaut mieux supprimer le test à ma manière.

À propos du framework de test

Il existe plusieurs types de frameworks de test, chacun ayant ses propres caractéristiques telles que la façon d'écrire du code. Ici, nous allons présenter les deux principaux types de frameworks.

Référencé → 6 frameworks de test Rails populaires! Lequel utiliseriez-vous, RSpec ou Minitest?

Minitest -Le framework par défaut de Rails. ・ Le coût d'apprentissage est relativement faible. -Il est également utilisé dans le didacticiel Rails. -On dit que la vitesse de traitement est relativement rapide. -La fonction par défaut est le minimum requis. ・ Petite quantité de code, simple

Rspec ・ Écrit en langage naturel par des personnes proches les unes des autres. ・ Taux d'utilisation élevé. ・ Il faut du temps pour s'y habituer. -Il est dit que la vitesse de traitement est plus lente que Minitest. -Fonctions par défaut abondantes. ・ La quantité de code est importante et compliquée.

Les deux semblent avoir des avantages et des inconvénients. Il est préférable pour les débutants de commencer avec Minitest, puis d'apprendre Rspec.

À propos des types de test

Selon la littérature de référence, il peut y avoir deux types ou plus, mais cette fois nous allons introduire deux types de tests.

Référencé → Guide de test des rails [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)

Test de l'unité

Tests réalisés en petites unités telles que les fonctions et les méthodes. Vérifiez le comportement du modèle et de l'assistant de vue seul.

Exemple:

test/helpers/application_helper_test


  test "full title helper" do
    assert_equal full_title,         "Ruby on Rails Tutorial Sample App"
  end

assert est un code qui évalue un objet ou une expression et vérifie si le résultat attendu (vrai) est obtenu. Ce qui précède vérifie que assert_equal a un full_title qui correspond exactement à «l'exemple d'application du didacticiel Ruby on Rails».

test/models/user_test.rb


  test "name should not be too long" do
    @user.name = "a" * 51
    assert_not @user.valid?
  end

assert_not est le code qui vérifie si false est obtenu par opposition à assert. Ce qui précède vérifie que l'utilisateur n'est pas valide si le nom de l'utilisateur comporte 51 caractères.

Test d'intégration

Un test qui combine des programmes. Vérifiez si les différentes fonctions sont correctement liées, en supposant le fonctionnement réel de l'utilisateur.

Exemple:

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

Ce qui précède est un test pour les utilisateurs qui ont entré un mot de passe invalide.

  1. Générez une page de connexion (login_path) avec la méthode get.   →get login_path

  2. Vérifiez que le modèle de page de connexion est sélectionné.   →assert_template 'sessions/new'

  3. Publiez une adresse e-mail valide et un mot de passe invalide dans login_path.   →post login_path,params: {session: { email: @user.email,password: "invalid"}}

  4. Vérifiez que l'utilisateur n'est pas connecté.   →assert_not is_logged_in?

La méthode is_logged_in? Est définie par:

test/test_helper.rb


  #Renvoie true si l'utilisateur du test est connecté
  def is_logged_in?
    !session[:user_id].nil?
  end
  1. Vérifiez que le modèle de page de connexion est sélectionné.   →assert_template 'sessions/new'

  2. Vérifiez que le message d'erreur s'affiche.   →assert_not flash.empty?

  3. Générez la page d'accueil (root_path) avec la méthode get.   →get root_path

  4. Vérifiez qu'aucun message d'erreur ne s'affiche.   →assert flash.empty?

C'est devenu un flux.

Résumé

Pour être honnête, je ne sais pas si je vais le tester moi-même après avoir terminé le didacticiel Rails. De plus, il semble qu'on vous demandera avec quelle rigueur le test sera effectué. J'ai pensé qu'il était important de s'habituer aux chiffres.

Recommended Posts

Test du tutoriel sur les rails
rails tutry
tutoriel sur les rails
rails tutry
tutoriel sur les rails
rails tutry
tutoriel sur les rails
tutoriel sur les rails
tutoriel rails Chapitre 1
Mémorandum du didacticiel Rails 1
Tutoriel Rails Memorandum 2
tutoriel rails Chapitre 7
tutoriel rails Chapitre 5
tutoriel rails Chapitre 10
tutoriel rails Chapitre 9
tutoriel rails Chapitre 8
[Débutant] Tutoriel Rails
Fiche technique du didacticiel Rails
Tutoriel Rails Chapitre 3 Apprentissage
[Rails] Didacticiel Apprendre avec les rails
Mémorandum du didacticiel Rails (Chapitre 3, 3.1)
[Rails] Test avec RSpec
Tutoriel Rails Chapitre 4 Apprentissage
Tutoriel Rails Chapitre 1 Apprentissage
Tutoriel Rails Chapitre 2 Apprentissage
rails Tutorial Fighting Record III
tester
11.1 Ressource AccountActivations: Mémorandum du didacticiel Rails - Chapitre 11
Registres du didacticiel Rails et mémorandum n ° 0
tester
[Rails] Code de test à l'aide de Rspec
tester
tester
[Tutoriel Rails Chapitre 4] Rubis à saveur de Rails
[Rails] À propos du test de réponse Rspec
Résoudre ActiveRecord :: NoDatabaseError lors du test des rails (Tutoriel Rails Chapitre 3)
[Rails] Implémentation de la fonction tutoriel
Piped together grep?: Mémorandum du Tutoriel Rails - Chapitre 8
[Tutoriel Rails Chapitre 5] Créer une mise en page
Tutoriel de mastication des rails [Chapitre 2 Application jouet]
[Rails5] Rspec -Test d'unité lors de l'imbrication-
Tutoriel Rails (4e édition) Mémo Chapitre 6
[rails] Faisons un test unitaire avec Rspec!
[Rails g. Erreur]
Tutoriel Rails 6e édition Résumé d'apprentissage Chapitre 10
Rails Tutorial 6e édition Résumé de l'apprentissage Chapitre 7
Notions de base sur les rails