2010-10-31 137 views
2

我正在爲會話控制器(Authlogic 2.1.6)的銷燬操作寫一個rspec測試。我無法弄清楚我應該調用什麼方法,無論是在用戶對象還是會話對象上,以確定會話是否仍然「活着」(即用戶已登錄或未登錄)。如何在使用Authlogic時測試註銷/註銷(UserSessionsController銷燬操作)?

我的第一本能是使用@ user.logged_in?但我知道這樣做是行不通的,因爲logged_in根據會話超時而不是會話對象的狀態做出決定。

下面是我寫的代碼不起作用的代碼,因爲be_logged_in在兩種情況下均返回true。

describe "for logged in user" do 
     it "should logout the user" do 
     activate_authlogic 
     @user = Factory.create(:valid_user) 
     @session = UserSession.create(@user) 
     @user.should be_logged_in 
     delete :destroy 
     @user.should_not be_logged_in 
     response.should redirect_to(root_path) 
     end 
    end 
    end 

應該用什麼來代替'be_logged_in'?我花了一些時間在調試器中查看附加到會話和用戶的方法,並且他們沒有一個在我身上跳出來,因爲這對我在這裏想要的是有用的。

回答

2

UserSession.find.should be_nil

+0

謝謝,zetetic。那就是訣竅。 – Iain 2010-11-01 01:30:02