黄瓜步骤定义中没有设计助手

rom*_*man 4 cucumber devise

我正在使用黄瓜测试我的rails 3.1应用程序,我正在使用设计进行身份验证.我需要测试当前用户电子邮件是否与授权期间使用的电子邮件相同.问题是黄瓜步骤定义中没有设计助手.

是否有任何解决方案可以在黄瓜步骤定义中使用设计助手?

我试过这个:

Cucumber::Rails::World.send('define_method', 'current_user') do
    @current_user ||= (session[:user] && User.find(session[:user])) || :false
end
Run Code Online (Sandbox Code Playgroud)

但这没有帮助.

Mat*_*lly 7

将其添加到需要使用它的步骤定义文件中:

World(Devise::TestHelpers)
Run Code Online (Sandbox Code Playgroud)

虽然这使得'sign_in'和'sign_out'方法可用,但它们实际上不能用于Cucumber,因此这不起作用.devise文件顶部的注释说"不要在集成测试中使用Devise :: TestHelpers".请参阅:https://github.com/plataformatec/devise/blob/master/lib/devise/test_helpers.rb

遗憾的是,黄瓜步骤无法访问Web请求对象和会话参数.看来,执行此操作的唯一方法是在每个方案开始时重复执行登录Web请求.无聊.我觉得奇怪的是,黄瓜可以直接操作测试rails应用程序的数据库,但不能直接操作web请求/会话.在任何情况下,这篇文章都展示了一个很好的例子,可以在一个模块中重构步骤,这些步骤可以很容易地通过许多步骤共享:http://drnicwilliams.com/2009/04/15/cucumber-building-a-better-世界对象/

如果其他人有一个方案可以设置登录状态的答案,而无需进行所有的水豚网络电话,我很乐意听到它.