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