我有一个自定义的设计路线:
devise_scope :user do
get '/login' => "devise/sessions#new", :as => :new_user_session
get '/logout' => 'devise/sessions#destroy',
...
我想确保在/login
调用请求时,它被正确路由到设计并且响应成功。
您如何测试自定义路由和成功的请求?
我有一个自定义的设计路线:
devise_scope :user do
get '/login' => "devise/sessions#new", :as => :new_user_session
get '/logout' => 'devise/sessions#destroy',
...
我想确保在/login
调用请求时,它被正确路由到设计并且响应成功。
您如何测试自定义路由和成功的请求?
在这种特殊情况下,我会说你想要两个测试。一个用于路由,一个用于成功请求。使用 rspec,这将类似于:
#spec/routing/devise_routing_spec.rb
require 'spec_helper'
describe "Devise Routes" do
it "should route the login correctly" do
{:get => "login"}.should route_to(controller: "devise/sessions", action: "new")
end
end
和
#spec/controllers/devise/session_controller_spec.rb
require 'spec_helper'
describe Devise::Sessions do
it "should be successful with a login request" do
get "new"
response.should be_success
end
end
如果您使用内置的 TestUnit 进行测试,请查看有关测试控制器的Rails 指南。
如果您使用的是 Rspec,请查看Rspec Github 页面以获取有关测试控制器的信息。
这取决于您的测试套件,我个人在 Rails 项目中使用RSpec + Capybara。如果您还没有测试套件,我强烈推荐本指南。 http://everydayrails.com/2012/03/12/testing-series-intro.html