Ruby on rails rails在集成测试中设计经过验证的路由

Ruby on rails rails在集成测试中设计经过验证的路由,ruby-on-rails,devise,integration-testing,Ruby On Rails,Devise,Integration Testing,我想测试应用程序中的每一条路径,并了解到我应该在集成测试中这样做: 但是,我得到了以下错误: NoMethodError: undefined method `authenticate?' for nil:NilClass /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/devise-2.1.2/lib/devise/rails/routes.rb:286:in `block in authenticated' 在线上很好地

我想测试应用程序中的每一条路径,并了解到我应该在集成测试中这样做:

但是,我得到了以下错误:

NoMethodError: undefined method `authenticate?' for nil:NilClass
/usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/devise-2.1.2/lib/devise/rails/routes.rb:286:in `block in authenticated'
在线上很好地提到,您不能在集成测试中使用designe::TestHelpers-- ,


我如何测试以下路线?

# config/routes.rb

devise_for :users

authenticated :user do
  root to: 'static#home'
end

root to: 'static#landing'

我正在使用
$rake test:integration

designe::TestHelpers运行测试单元测试,它直接将内容放入会话中。使用Capybara运行集成测试时,您无权访问服务器端会话。您只需访问浏览器即可

在我们的应用程序中,我们的集成测试使用这样的辅助方法,通过用户界面与Desive交互:

def身份验证(用户,密码=nil)
密码| |=FactoryGirl.attributes_for(:user)[:密码]
访问新用户会话路径
在“电子邮件”中填写:user.email
在“密码”中填写:password
单击“登录”
expect(当前路径)。到eq欢迎路径
结束

集成测试对您的应用程序工作流程非常重要。他们可以更清楚地了解您的URL定义

检查说明此错误原因和已验证路由中的解决方案的by
nicholaides

但问题仍然是:

Deviate有自己的方法,不能在ruby中使用Deviate::TestHelpers。那你怎么测试呢?您需要以某种方式包含design::TestHelpers

如果您使用的是RSpec,那么可以将以下内容放入名为
spec/support/designe.rb的文件中:

RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
end
这是规定的

但请稍候………再次,您可能会遇到与
Test::Unit
相同的问题

那么

因此,您只需要将designe测试助手添加到test/test\u helper.rb

class ActiveSupport::TestCase
  include Devise::TestHelpers
end