Ich versuche Integrationstests mit rspec, factory_girl & amp; Capybara. Ich habe auch Gurke installiert, aber ich benutze es nicht (zu meinem Wissen).
Ich möchte im Grunde die db mit meinem Benutzer auffüllen, dann auf meine Homepage gehen und versuchen, mich einzuloggen. Es sollte zu user_path (@user) umleiten.
Es scheint jedoch, dass Sitzungen in meinen / rspec / requests / Integrationstests nicht gespeichert werden.
Meine Spezifikation: /rspec/requests/users_spec.rb
%Vor%Rückgabe:
%Vor%Stattdessen wird es zu meinem please_login_path weitergeleitet - was passieren sollte, wenn die Anmeldung aus irgendeinem Grund fehlschlägt (oder wenn die Sitzung [: user_id] nicht eingestellt ist).
Wenn ich versuche, session.inspect zu setzen, schlägt es als Nil-Objekt fehl.
Wenn ich dies in den Controller-Tests (/rspec/controllers/sessions_spec.rb) versuche, kann ich problemlos auf die Sitzung zugreifen und Session [: user_id]
aufrufenWenn Sie Devise verwenden, müssen Sie Warden :: Test :: Helpers (genau nachdem die Anforderung von spec_helper ein guter Ort ist) wie in im Warden Wiki .
Der Aufruf der Sitzung gibt nil zurück, da capybara keinen Zugriff darauf bietet, wenn er als Integrationstest ausgeführt wird.
Ich habe die gleichen Probleme und obwohl das Ausfüllen eines Formulars eine Option für einige sein könnte, musste ich meinen eigenen Authentifizierungsrubin rollen, weil ich ein Authentifizierungssystem eines Drittanbieters (Janrain um genau zu sein) verwendete .... in meinem Tests habe ich am Ende etwa so verwendet:
Hier ist, was ich in meiner Spezifikation / support / test_helpers_and_stuff.rb
habe %Vor%Dann in meiner Anfrage, mit Capybara und Selen, habe ich folgendes getan:
%Vor%BTW, ich habe Lösungen gefunden, nachdem ich die vorgeschlagenen Lösungen für diesen Beitrag und diesen Beitrag und keiner von beiden hat funktioniert für mich. (Aber sie haben meine Lösung sicherlich inspiriert)
Viel Glück!
Sie haben sich wahrscheinlich davon entfernt, aber ich hatte nur mit der gleichen Frage zu kämpfen. Es stellte sich heraus, dass es eine Frage der Syntax war. Ich habe Symbole für :email
und :password
verwendet und stattdessen Strings verwendet ( "email"
und "password"
).
Mit anderen Worten, versuchen Sie dies zu ändern:
%Vor%dazu:
%Vor%Tags und Links ruby-on-rails session capybara rspec