Testen von Sitzungen in Rails 3 mit Rspec & Capybara

8

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]

aufrufen     
Tom Blomfield 08.03.2011, 16:11
quelle

3 Antworten

6

Wenn 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.

    
Benjamin Curtis 16.03.2011 20:33
quelle
3

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!

    
PeppyHeppy 03.12.2011 22:56
quelle
1

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%     
Ben Coppock 23.09.2011 04:58
quelle