3 Stimmen

Authentifizierung von Mock-Usern beim Testen von Rails 3.1

Ich versuche, meine Rails 3.1 app zu testen (ich lerne Testen, wie ich gehe) und ich und stecken mit, wie ich einen Benutzer authentifizieren, da normalerweise es eine Sitzung setzt, aber die Tests sind nicht mit dem Browser so Sitzung ist eine undefinierte Methode. Ich bin mit der neuen Schienen 3.1 has_secure Passwort.

Wie kann ich die Authentifizierung korrekt einrichten und testen, und wie kann ich Teile der Anwendung testen, die eine Authentifizierung des Benutzers erfordern?

Ich bin wie folgt aufgestellt:

rspec 2 Wasserschwein Wache fabrik_mädchen

Ich danke Ihnen!

0voto

Luke Cowell Punkte 693

Bei einem Controller-Test ist der Sitzungs-Hash der letzte Parameter. Nehmen wir an, Sie haben so etwas in Ihren Session-Controller-Tests:

post :create, :user => { :email => "blah@blah.com" }, :color => "red"

Dadurch werden 2 Parameter an den Controller übermittelt: params[:user] und params[:color].

Was ist mit Sitzungsvariablen? Sitzungsvariablen werden als letzter Parameter übermittelt. Wenn wir eine "last_logged_in"-Sitzungsvariable setzen wollten, würden wir den obigen Text in "last_logged_in" ändern:

post :create, {:user => { :email => "blah@blah.com" }, :color => "red"}, {:last_logged_in => Time.now}

Beachten Sie die zusätzlichen geschweiften Klammern, die ich um die Parameter user und color gesetzt habe. Jetzt haben Sie Zugriff auf session[:last_logged_in] in Ihrem Controller.

Ich empfehle dringend die Lektüre der ror-Leitfäden. Hier ist einer über Controller-Tests: http://guides.rubyonrails.org/testing.html#functional-tests-for-your-controllers

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X