Controller-Spezifikationen für JS-Aktionen ( format: :js
) schlagen mit Rails 4.1.0.rc1 fehl und erzeugen den folgenden Fehler:
ActionController::InvalidCrossOriginRequest:
Security warning: an embedded <script> tag on another site requested protected JavaScript. If you know what you're doing, go ahead and disable forgery protection on this action to permit cross-origin JavaScript embedding.
Ich vermute nur, aber dies könnte eine neue Rails-Funktion sein, die sich auf RSpec auswirkt, die wahrscheinlich diese Anforderungen von einer anderen Domäne generiert, als von der Anwendung erwartet.
Sie können dies reproduzieren, indem Sie https://github.com/mezuro/mezuro klonen, auf dem Zweig rails4.1, nach bundle install
ausführen: rspec spec/controllers/repositories_controller_spec.rb
.
Wenn ich diese Anwendung beobachte, kann ich auch sagen, dass dies GET-Anfragen betrifft, während POST-Anfragen noch gut funktionieren.
Das Ausführen der Anwendung im Browser führt zu keinen Fehlern oder Warnungen sowie Gurkentests. Und die Tests mit Rails 4.0.3 sind OK. Außerdem habe ich dies mit den gleichen Ergebnissen gegen rspec-rails 2.14.1 und 3.0.0.beta getestet.
Vielen Dank!
Ursache: Schienen/Schienen#13345
Basierend auf dem PR scheint es, dass Sie xhr :get
statt get
tun oder das Verifizierungstoken manuell übergeben müssen. Wir implementieren die Funktion get
nicht direkt, sie ist Teil der Rails-Testhilfen, daher sollten Sie ihre bevorzugte Methode verwenden ( xhr :get
).
Wird geschlossen, da dies auch bei MiniTest fehlschlagen würde...
/cc @myronmarston @alindeman
Danke @JonRowe , mit xhr :get
es wie erwartet funktioniert. Entschuldigung für die Unannehmlichkeiten.
Keine Sorge, ich musste das recherchieren, um herauszufinden, was los war! :)
Das ist hilfreich
http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#csrf -protection-from-remote-script-tags
Letztes Update , jetzt können Sie Folgendes verwenden:
(ruby)
get :action, xhr: true, format: :js
Hilfreichster Kommentar
Letztes Update , jetzt können Sie Folgendes verwenden:
(ruby) get :action, xhr: true, format: :js