【发布时间】:2018-08-13 19:56:33
【问题描述】:
我正在使用 Cucumber 进行集成测试。在我的ApplicationController 中,我有一个名为current_user 的方法,它提供了当前用户对象。我使用此对象将项目添加到 redis 数据库:
$redis.sadd("cart#current_user.id}", [1,5,2])
在我的 Cucumber 步骤中,我测试了这个功能:
Then /^the redis database should have "(.+)" item ids/ do |count|
expect($redis.smembers("cart#{current_user.id}").count).to eq count.to_i
end
但是,据我了解,Cucumber 无法访问控制器方法,即使它们位于 ApplicationController 下,因此我无法像在控制器中那样使用 current_user 方法。
我现在正在做的是因为我正在测试功能,所以数据库中只有一个用户,因此 current_user.id 将始终为 1,但如果我开始添加更多用户,这可能无法正常工作。
有解决办法吗?
【问题讨论】:
-
我想在您的测试套件中的某个时刻,您注册或登录用户。此时,您需要以某种方式获取用户 ID,并将其存储在变量中。
标签: ruby-on-rails ruby rspec cucumber