Ce n'est pas une continuation de l'article précédent, mais il a un contenu similaire. De plus, ce n'est que ** 1 exemple ** dans l'erreur "302", donc merci.
Ensuite, tout d'abord, l'erreur </ font> suivante est apparue lors de l'implémentation du code de test unitaire du contrôleur. Regarde s'il te plait
Terminal
% bundle exec rspec spec/requests/orders_spec.rb
OrdersController
GET /index
Lorsque je demande l'action d'indexation, la réponse est renvoyée normalement.(FAILED - 1)
Lorsque vous demandez l'action d'indexation, il y a une description de l'élément répertorié dans la réponse(FAILED - 2)
Failures:
1) OrdersController GET /Lorsque vous demandez l'action d'indexation d'index, la réponse est renvoyée normalement.
Failure/Error: expect(response.status).to eq 200
expected: 200
got: 302
(compared using ==)
# ./spec/requests/orders_spec.rb:24:in `block (3 levels) in <top (required)>'
2) OrdersController GET /Lorsque vous demandez l'action d'indexation d'index, il y a une description de l'élément répertorié dans la réponse.
Failure/Error: expect(response.body).to include @item.details
expected "<html><body>You are being <a href=\"http://www.example.com/users/sign_in\">redirected</a>.</body></html>" to include "Description du produit"
# ./spec/requests/orders_spec.rb:29:in `block (3 levels) in <top (required)>'
~ Omis ~
Maintenant, je voudrais vérifier le contenu de l'erreur. Il y a deux </ font> parties qui provoquent cette erreur. Tout d'abord, first </ font> est la partie suivante.
Terminal
1) Failure/Error: expect(response.status).to eq 200
expected: 200
got: 302
Ensuite, second </ font> est la partie suivante.
Terminal
2) Failure/Error: expect(response.body).to include @item.details
expected "<html><body>You are being <a href=\"http://www.example.com/users/sign_in\">redirected</a>.</body></html>" to include "Description du produit"
Vérifions maintenant le contenu de l'erreur.
** "Le code de réponse de l'état de redirection trouvé par HyperText Transfer Protocol (HTTP) 302 indique que la ressource demandée a été temporairement déplacée vers l'URL indiquée par Emplacement, bien que le navigateur redirige vers cette page. , Le moteur de recherche ne met pas à jour le lien vers la ressource. "**
Pour expliquer brièvement ce qui précède, le contenu est "Vous avez été redirigé vers une autre page au lieu de la page vers laquelle vous vouliez initialement effectuer la transition".
** (Site de référence cité) ** Site de référence pour le code d'état de la réponse HTTP
<a href=\"http://www.example.com/users/sign_in\">redirected</a>.
Tout d'abord, il y a ** "users / sign_in" , donc on peut en déduire que l ' écran de connexion ** est impliqué. Et puis il y a ** "redirigé" **, donc vous pouvez deviner qu'il a été ** redirigé ** ici aussi.
En déduisant du contenu de vérification ci-dessus, on peut supposer que ** "Est-il passé à l'écran de connexion par redirection?" **.
Ensuite, quand il s'agit de la partie où un tel traitement est effectué, il s'avère que la partie ** "authenticate_user!" ** correspond. Voici un petit ** "authenticate_user!" **.
Si l'utilisateur n'est pas connecté lorsque le processus est exécuté, l'utilisateur passe à l'écran de connexion. C'est une méthode de conception qui effectue le traitement.
À partir des points ci-dessus, j'ai décidé de commenter le ** "authenticate_user!" ** pertinent lors de l'exécution du code de test.
orders_controller.rb
class OrdersController < ApplicationController
before_action :authenticate_user!(Commentez cette ligne)
Terminal
% bundle exec rspec spec/requests/orders_spec.rb
OrdersController
GET /index
Lorsque je demande l'action d'indexation, la réponse est renvoyée normalement.
Lorsque vous demandez l'action d'indexation, il y a une description de l'élément répertorié dans la réponse
Lorsque vous demandez l'action d'indexation, une image du produit répertorié apparaît dans la réponse
Lorsque vous demandez l'action d'indexation, le prix de vente de l'article répertorié existe dans la réponse
Lorsque vous demandez l'action d'indexation, il y a un libellé pour confirmer le contenu de l'achat dans la réponse
Finished in 5.79 seconds (files took 10.02 seconds to load)
5 examples, 0 failures
Comme mentionné ci-dessus, le code de test a été exécuté avec succès. </ font>
Cette ** erreur (302) ** était une erreur survenue parce que ** redirigé ** vers l'écran de connexion avec ** "authenticate_user!" ** lors de l'exécution du code de test du contrôleur. Le processus de connexion avec le code de test d'intégration est facile, mais je n'étais pas sûr de pouvoir me connecter avec le code de test unitaire du contrôleur, alors je l'ai traité en commentant cette fois.