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定义
检查说明此错误原因和已验证路由中的解决方案的bynicholaides
但问题仍然是:
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