我要做的是current_user
在定义 Cucumber 步骤时使用(依赖)方法。我在我的项目中使用 Clearance。
首先我尝试使用sign_in
但它没有用(我猜黄瓜世界不知道清除方法......)。
那么如何让 Cuckes 识别current_user
和sign_in
/sign_out
方法呢?
我要做的是current_user
在定义 Cucumber 步骤时使用(依赖)方法。我在我的项目中使用 Clearance。
首先我尝试使用sign_in
但它没有用(我猜黄瓜世界不知道清除方法......)。
那么如何让 Cuckes 识别current_user
和sign_in
/sign_out
方法呢?
您的 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
在上述步骤中存储然后为其提供属性读取器来在您的步骤中伪造它。
我不同意每个验收测试(黄瓜或其他)都必须执行登录逻辑的想法。幸运的是,如果您同意,Clearance 在测试中添加了一个后门,可以让您跳过登录步骤。
user = create(:user)
visit posts_path(as: user)
现在,您可以像用户一样保留与登录相关的功能来驱动登录 ui,并跳过与登录没有直接关系的功能。