5

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

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

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

4

2 回答 2

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在上述步骤中存储然后为其提供属性读取器来在您的步骤中伪造它。

于 2010-12-31T04:05:59.933 回答
1

我不同意每个验收测试(黄瓜或其他)都必须执行登录逻辑的想法。幸运的是,如果您同意,Clearance 在测试中添加了一个后门,可以让您跳过登录步骤。

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

现在,您可以像用户一样保留与登录相关的功能来驱动登录 ui,并跳过与登录没有直接关系的功能。

于 2013-12-06T02:32:55.210 回答