Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails 4中,如何测试和设计自定义注册路径?_Ruby On Rails_Ruby_Ruby On Rails 4_Devise - Fatal编程技术网

Ruby on rails 在Rails 4中,如何测试和设计自定义注册路径?

Ruby on rails 在Rails 4中,如何测试和设计自定义注册路径?,ruby-on-rails,ruby,ruby-on-rails-4,devise,Ruby On Rails,Ruby,Ruby On Rails 4,Devise,我定制了设计路径,如下所示: devise_for :users, path: '', path_names: { sign_in: 'signin', sign_out: 'signout', password: 'secret', confirmation: 'verification', unlock: 'unblock', registration: 'signup', sign_up: 'new' } 例如,它使用户注册路径如下http://localhost:3000/signup

我定制了
设计
路径,如下所示:

devise_for :users, path: '', path_names: { sign_in: 'signin', sign_out: 'signout', password: 'secret', confirmation: 'verification', unlock: 'unblock', registration: 'signup', sign_up: 'new' }
例如,它使用户注册路径如下
http://localhost:3000/signup/new
。现在的问题是,我不知道如何测试这个页面。以下是针对用户和控制器的测试:

    require 'test_helper'

    class UsersControllerTest < ActionController::TestCase

      test "should get signup" do
        get :signup_new
        assert_response :success
        assert_select "title", "SignUp | #{Figaro.env.app_name}"
      end

    end
需要“测试助手”
类UsersControllerTest

如何在我的测试文件中访问这些自定义路径?

您可能测试了错误的控制器。检查您的路由(
rake路由
),查看分配了哪个控制器来处理您的设计验证路由。默认情况下,我相信它是
designe::sessioncontroller

我不认为这是你的意图,但值得一提的是,你不应该测试设计宝石

注意,对ActionController::TestCase的请求是模拟的。如果您想测试真正的请求,那么您应该研究集成测试。可以找到一个简要概述

更新
查看Desive gem中有关如何登录用户的一些示例。请注意,
include designe::TestHelpers
添加在测试类顶部附近,该类在
方法中添加了一个
sign\u。

好的,那么在用户的控制器中,我如何在测试中登录用户?即使我在错误的控制器,我应该能够访问该页面的权利?在设计指南中,它告诉我们如何使用水豚进行测试。但我并没有使用它或Rspec。我也偶然发现了这一点,它显示了如何直接使用Warden登录用户(Desive在封面下使用Warden)。