2012-01-04 35 views
8

我正在使用rspec和capybara進行集成測試。rspec集成測試中的會話對象

他們的方式使請求規格中的會話對象?

我在我使用會話對象以檢查其值以顯示選擇性內容的圖頁。

問題現在面臨的是,我不能創建要求規範會話對象。 下面是該視圖的例子:

<% if session[:role] == "Role" %> 
---content--- 
<% else %> 
--content-- 
<% end %> 

而且我的要求規範

session[:role] = "Role" 
visit my_path 

內,但它引發我一個錯誤「未定義的方法`會議」的零:NilClass」。

我也試圖尋找到創造capybara.But的會話對象無法找到任何東西。

他們有任何解決方法嗎?我找不到任何與此有關的事情,似乎這是不可能的。一點幫助真的很感激。

+0

在if條件中,你可能意思是==而不是=。 – 2012-01-04 11:46:27

+0

是對不起,我的意思==這裏 – 2012-01-04 11:48:34

回答

3

你應該做的要求規格的方式是訪問任何URL,用戶通常需要以訪問該會話變量設置。

我不知道任何其他方式,或者其他比手工設置會話cookie。 Capybara.current_session.driver.browser.set_cookie讓你這樣做,但你必須手動創建cookie值。

+0

我想這:餅乾[:作用] = 「教練」, Capybara.current_session.driver.browser.set_cookie(餅乾[:作用]),,但不是working.what英里做錯了? – 2012-01-04 13:22:22

+1

這不會設置會話。您需要重現rails如何生成會話cookie並在set_cookie調用中使用該輸出。你絕對不是在這裏捱打 - 就像我說的通常的做法是訪問設置會話 – 2012-01-04 13:30:48

+0

的頁面,在我的情況下,我使用應用程序控制器中的私有方法設置這些會話。 – 2012-01-04 13:50:32