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.
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.
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)
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.
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.
Générez une page de connexion (login_path) avec la méthode get. →get login_path
Vérifiez que le modèle de page de connexion est sélectionné. →assert_template 'sessions/new'
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"}}
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
Vérifiez que le modèle de page de connexion est sélectionné. →assert_template 'sessions/new'
Vérifiez que le message d'erreur s'affiche. →assert_not flash.empty?
Générez la page d'accueil (root_path) avec la méthode get. →get root_path
Vérifiez qu'aucun message d'erreur ne s'affiche. →assert flash.empty?
C'est devenu un flux.
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