5

我要完成的是在定義Cucumber步驟時使用(依靠)current_user方法。我在我的項目中使用Clearance。黃瓜和清除:current_user在步驟

首先,我嘗試使用sign_in,但它沒有奏效(我猜Cucumber World不知道Clearance方法...)。

那麼我該如何使Cuckes識別current_usersign_in/sign_out方法?

回答

6

您的黃瓜功能應通過公共用戶界面驅動您的應用程序。喜歡的東西:

Given /^I am signed in as "([^\"]*)"%/ do |username| 
    visit 'sign_in' 
    fill_in 'Username', :with => username 
    click 'Sign In' 
end 

由於current_user方法不可用的瀏覽器,你不應該在你的規範使用。

通過在上述步驟中存儲@current_user,然後爲其提供屬性讀取器,您可以在步驟中僞造它。

+0

9個月後,我意識到如何cucke對的。現在明白爲什麼你的答案在一天之內是正確的。 – gmile 2011-11-15 15:43:38

+0

雖然這仍然令人沮喪。因爲'current_user'即使在服務器端也是'nil',而不僅僅是瀏覽器端。 – 2013-08-06 21:17:16

1

我不同意每個驗收測試(黃瓜或其他)都必須執行登錄邏輯的想法。幸運的是,如果您同意,Clearance在測試中添加了back door,可以讓您跳過登錄步驟。

user = create(:user) 
visit posts_path(as: user) 

現在,您可以留下您的登錄相關的功能驅動的登錄界面和用戶一樣,跳過這對於那些不直接相關的記錄中的功能。

+0

非常感謝! – kwerle 2014-02-14 20:33:50