2010-09-27 11 views
5

mam spec testowania kontrolera jak poniżejLogowanie podczas testowania z RSpec i 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 

Mam również stosować tę linię w spec_helper.rb

require "authlogic/testcase" 

test na „user nie zalogowany przejściach”, ale do«zalogowany»użytkownik nie powiedzie się z

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

Odpowiedz

-1

wydaje się normalne, bo można pobrać„/ produkty "URL z zalogowanym użytkownikiem. Potem zobaczy tę stronę. Nie przekierowuje na stronę, którą widzi.

Każdy test jest niezależny. W poprzednim teście nie zapisano stanu.

+0

Dlaczego nie otrzymuję przekierowania w przykładzie "użytkownik zalogowany", przynajmniej powinien zostać przekierowany gdzieś. Próbowałem nawet użyć redirect_to (login_path) zamiast redirect_to (products_path) nadal otrzymywałem ten sam błąd. Dlaczego? – Rohit

+0

ponieważ pytasz tylko stronę "/ products", jeśli nie ma przekierowania na coś innego w tym kontrolerze, to jest normalne. Umieść kontroler Produkcji, jeśli chcesz uzyskać więcej informacji – shingara

+0

, więc w zasadzie to, co mówisz. Czy mogę usunąć przekierowanie_do linii ze specyfikacji – Rohit

Powiązane problemy