2011-02-24 67 views
2

我寫的第一個rails應用程序使用railstutorial的手動驗證。如何獲得測試許可中的身份驗證狀態

對於我的第二個應用程序,我使用Clearance。我正在嘗試編寫集成測試,以確定單擊登錄/註銷鏈接是否有效。在railstutorial版本,我可以使用以下命令:

describe "success" do 
    it "should sign a user in and out" do 
    user = Factory(:user) 
    visit signin_path 
    fill_in :email, :with => user.email 
    fill_in :password, :with => user.password 
    click_button 
    controller.should be_signed_in 
    click_link "Sign out" 
    controller.should_not be_signed_in 
    end 
end 

我該怎麼做等價的東西有間隙?我只是無法解決問題。它似乎告訴我,控制器是零。

回答

0

我做了EXACT同樣的事情,閱讀Rails教程,然後使用Clearance啓動我自己的應用程序。用戶似乎是正確的起點,所以這就是我開始的地方。我甚至沒有替換顯示Rails鏈接等的默認靜態主頁。我相信這實際上是問題所在。 Clearance並未定義用戶個人資料頁面或任何內容,因此當您登錄時,它會將您重定向到主頁(除非您在別的地方,但需要登錄)。默認主頁只是一個靜態文件,所以它不會在典型的Rails請求週期中運行,也不會加載任何控制器。

我最終只是增加一個超級簡單的頁面控制器(像在Rails的教程,第3章),因此在登錄後會重定向到動態頁面,這使得上述幾乎通過測試。最後的編輯,我需要把事情的工作是

click_link "Sign Out", :method => :delete 

在這裏,我指定click_link應該使用:delete方法,而不是:get,它aparently(默認設置)。我還是比較新的Rails,幾天前幾乎沒有完成這本書,所以我不確定爲什麼只有click_link在本書中工作,但沒有在我的應用程序(也許從Rails 3.0到3.1?),但這一切都過去了。

+0

我不得不閱讀我自己的問題,甚至找出我問了什麼!我想我最終做了一個完全不同的方式,但你的回答是我所問的問題的正確解決方案。 – Nick

+0

是的,問題是在舊的方面,但我的情況是這樣一個完全匹配,我只需要回答它:) – Chaulky

相關問題