我要做的是在定义Cucumber步骤时使用(依赖)current_user
方法。我在我的项目中使用了Clearance。
首先,我尝试使用sign_in
,但它没有用(我猜黄瓜世界不知道清除方法......)。
那么如何让Cuckes识别current_user
和sign_in
/ sign_out
方法?
答案 0 :(得分:6)
您的Cucumber功能应该通过公共用户界面推动您的应用程序。类似的东西:
Given /^I am signed in as "([^\"]*)"%/ do |username|
visit 'sign_in'
fill_in 'Username', :with => username
click 'Sign In'
end
由于浏览器无法使用current_user
方法,因此您不应在规范中使用它。
您可以通过在上述步骤中存储@current_user
然后为其提供属性读取器来伪造它。
答案 1 :(得分:1)
我不同意每个验收测试(黄瓜或其他)必须运用登录逻辑的想法。幸运的是,如果您同意,Clearance已在测试中添加了back door,可让您跳过登录步骤。
user = create(:user)
visit posts_path(as: user)
现在,您可以保留与登录相关的功能,以用户身份驱动登录ui,并跳过与登录无直接关系的功能。