Ich habe eine Ressource, wo die neue Aktion erfordert, dass ein Benutzer zum Anzeigen angemeldet ist. Wenn ein Benutzer versucht, eine neue Ressource zu erstellen, ohne angemeldet zu sein, wird er auf die Anmeldeseite umgeleitet (302). Mein Funktionstest wie folgt aussieht:Devise warden Fehler für authenticate_user in funktionalen Rails-Test ausgelöst
test "should not get new unless logged in" do
get :new
assert_response :redirect
end
Der Stacktrace sieht ungefähr so aus:
ArgumentError: uncaught throw :warden
/.../gems/warden-1.1.1/lib/warden/proxy.rb:114:in `throw'
/.../gems/ruby-1.9.2-p318/gems/warden-1.1.1/lib/warden/proxy.rb:114:in `authenticate!'
/.../gems/ruby-1.9.2-p318/gems/devise-2.0.4/lib/devise/controllers/helpers.rb:48:in `authenticate_user!'
Ich habe einen before_filter vor der neuen Aktion authenticate_user.
Ich verstehe, warum authenticate_user! scheitert, aber ich kann nicht verstehen, warum es einen Fehler wirft. Sollte es sich nicht einfach so verhalten wie in der Webapp, also. Leitet Benutzer auf die Anmeldeseite um?
Danke.
Haben Sie jemals einen Weg gefunden, einen Fall zu testen, in dem der Benutzer nicht angemeldet ist? Ich habe ein ähnliches Problem. –
Ich bin mir nicht sicher, wie ich das schließlich funktionierte, aber es könnte daran liegen, dass ich "include Devise :: TestHelpers" zur Testklasse hinzufüge.Fühlen Sie sich frei, einen Pastebin mit Ihrem Code hinzuzufügen, und ich werde versuchen, einen Blick darauf zu werfen. – Ger
in meinem Fall erwies sich dies als 'js: true' in der Feature-Deklaration (die ich nicht brauchte und irgendwie diesen Fehler verursachte) – xxjjnn