Es ist keine Fortsetzung des vorherigen Artikels, hat aber einen ähnlichen Inhalt. Außerdem ist es nur ** 1 Beispiel ** im Fehler "302", also danke.
Dann trat zunächst der folgende Fehler </ font> auf, als der Unit-Test-Code der Steuerung implementiert wurde. Schauen Sie bitte
Terminal
% bundle exec rspec spec/requests/orders_spec.rb
OrdersController
GET /index
Wenn ich die Indexaktion anfordere, wird die Antwort normal zurückgegeben.(FAILED - 1)
Wenn Sie die Indexaktion anfordern, enthält die Antwort eine Beschreibung des aufgelisteten Elements(FAILED - 2)
Failures:
1) OrdersController GET /Wenn Sie die Indexindexaktion anfordern, wird die Antwort normal zurückgegeben.
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 /Wenn Sie die Indexindexaktion anfordern, enthält die Antwort eine Beschreibung des aufgelisteten Elements.
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 "Produktbeschreibung"
# ./spec/requests/orders_spec.rb:29:in `block (3 levels) in <top (required)>'
~ Ausgelassen ~
Jetzt möchte ich den Inhalt des Fehlers überprüfen. Es gibt zwei </ font> Teile, die diesen Fehler verursachen. Zunächst ist first </ font> der folgende Teil.
Terminal
1) Failure/Error: expect(response.status).to eq 200
expected: 200
got: 302
Als nächstes ist zweite </ font> der folgende Teil.
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 "Produktbeschreibung"
Lassen Sie uns nun den Inhalt des Fehlers überprüfen.
** "Der Antwortcode für den gefundenen Redirect-Status des HyperText Transfer Protocol (HTTP) 302 zeigt an, dass die angeforderte Ressource vorübergehend an die durch Location angegebene URL verschoben wurde, obwohl der Browser auf diese Seite umleitet. , Die Suchmaschine aktualisiert den Link zur Ressource nicht. "**
Um das Obige kurz zu erklären, lautet der Inhalt "Sie wurden auf eine andere Seite anstatt auf die Seite umgeleitet, auf die Sie ursprünglich wechseln wollten."
** (Referenzseite zitiert) ** Referenzseite für den HTTP-Antwortstatuscode
<a href=\"http://www.example.com/users/sign_in\">redirected</a>.
Zunächst gibt es ** "users / sign_in" **, sodass geschlossen werden kann, dass der ** Anmeldebildschirm ** betroffen ist. Und dann gibt es ** "umgeleitet" **, so dass Sie vermuten können, dass es auch hier ** umgeleitet ** wurde.
Aus den obigen Überprüfungsinhalten kann abgeleitet werden, dass ** "Wird es durch Umleitung zum Anmeldebildschirm übersprungen?" **.
Wenn es dann um den Teil geht, in dem eine solche Verarbeitung durchgeführt wird, stellt sich heraus, dass der Teil ** "authenticate_user!" ** entspricht. Hier ist ein kleiner ** "authenticate_user!" **.
Wenn der Benutzer bei der Ausführung des Prozesses nicht angemeldet ist, wechselt der Benutzer zum Anmeldebildschirm. Es ist eine Methode für die Entwicklung, die die Verarbeitung durchführt.
Aus den oben genannten Gründen habe ich beschlossen, den relevanten ** "authenticate_user!" ** bei der Ausführung des Testcodes zu kommentieren.
orders_controller.rb
class OrdersController < ApplicationController
before_action :authenticate_user!(Kommentiere diese Zeile aus)
Terminal
% bundle exec rspec spec/requests/orders_spec.rb
OrdersController
GET /index
Wenn ich die Indexaktion anfordere, wird die Antwort normal zurückgegeben.
Wenn Sie die Indexaktion anfordern, enthält die Antwort eine Beschreibung des aufgelisteten Elements
Wenn Sie die Indexaktion anfordern, enthält die Antwort ein Bild des aufgelisteten Produkts
Wenn Sie die Indexaktion anfordern, ist der Verkaufspreis des aufgelisteten Artikels in der Antwort vorhanden
Wenn Sie die Indexaktion anfordern, gibt es einen Wortlaut, um den Kaufinhalt in der Antwort zu bestätigen
Finished in 5.79 seconds (files took 10.02 seconds to load)
5 examples, 0 failures
Wie oben erwähnt, wurde der Testcode erfolgreich ausgeführt. </ font>
Dieser ** Fehler (302) ** war ein Fehler, der auftrat, weil ** beim Ausführen des Testcodes des Controllers ** mit ** "authenticate_user!" ** zum Anmeldebildschirm umgeleitet wurde. Das Anmelden mit dem Integrationstestcode ist einfach, aber ich war mir nicht sicher, ob ich mich mit dem Unit-Testcode des Controllers anmelden konnte, also habe ich mich diesmal damit befasst, indem ich dies auskommentierte.
Referenzseite für den HTTP-Antwortstatuscode
Recommended Posts