黄瓜和清关:current_user步骤

时间:2010-11-18 14:54:27

标签: ruby-on-rails session cucumber integration-testing clearance

我要做的是在定义Cucumber步骤时使用(依赖)current_user方法。我在我的项目中使用了Clearance。

首先,我尝试使用sign_in,但它没有用(我猜黄瓜世界不知道清除方法......)。

那么如何让Cuckes识别current_usersign_in / sign_out方法?

2 个答案:

答案 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,并跳过与登录无直接关系的功能。