2010-09-27 17 views
5

Ich habe eine Spezifikation zum Testen eine Steuerung wie untenBenutzeranmeldung beim Testen mit rspec und authlogic

require 'spec_helper' 

describe ProductsController do 
setup :activate_authlogic 

describe "user not logged in" do 

it "should not GET index" do 
get :index 
response.should redirect_to(login_path) 
end 

end 

describe "user logged in" do 

before(:each) do 
UserSession.create :username => "rohit", :password => "test123" 
end 

it "should GET index" do 
get :index 
response.should redirect_to(products_path) 
end 

end 

end 

ich auch diese Zeile in spec_helper.rb verwendet habe

require "authlogic/testcase" 

Der Test für „user nicht eingeloggt "aber für" angemeldeten Benutzer "scheitert mit

'ProductsController user is logged in should GET index' FAILED 
expected redirect to "/products", got no redirect 

Antwort

-1

Es scheint normal, weil Sie die '/ Produkte holen 'URL mit einem angemeldeten Benutzer. Dann sieht er diese Seite. Er wird nicht auf die Seite umgeleitet, die er sieht.

Jeder Test ist unabhängig. Kein Zustand ist im vorherigen Test gespeichert.

+0

Warum bekomme ich eine No-Umleitung in dem "Benutzer angemeldet" -Beispiel, zumindest sollte es irgendwo umgeleitet werden. Ich habe sogar versucht, redirect_to (login_path) anstelle von redirect_to (products_path) zu verwenden, obwohl ich den gleichen Fehler bekam. Warum das? – Rohit

+0

weil Sie nur die Seite '/ Produkte' fragen, wenn es keine Redirect_to etwas anderes in diesem Controller gibt, ist es normal. Setzen Sie Ihren Produktions-Controller, wenn Sie mehr Informationen wünschen – shingara

+0

also, im Grunde, was sagst du. Sollte ich die redirect_to Zeile aus der Spezifikation entfernen – Rohit