RSpec路由规范无法进行自定义匹配

时间:2014-03-23 06:58:32

标签: ruby-on-rails rspec

使用自定义网址匹配器进行RSpec测试失败。

routes.rb中:

get 'a/:code' => redirect(Rails.application.config.url_homepage)

规格/路由/ routes_routing_spec.rb

describe 'routing' do
  describe "activation Urls" do

    it "redirects /a/:code to the public homepage" do
      get('/a/12341234').should route_to(Rails.application.config.url_homepage)
    end

  end
end

RSpec输出:

  1) routing activation URLS redirects /a/:code to the public homepage
     Failure/Error: get('/a/12341234').should route_to(Rails.application.config.url_homepage)
       No route matches "/a/12341234"
     # ./spec/routing/routes_routing_spec.rb:7:in `block (3 levels) in <top (required)>'

路由工作 - 一旦我在浏览器中打开此类URL,我将被正确重定向。

我是否错过了一个至关重要的细节?

1 个答案:

答案 0 :(得分:2)

您不能将route_to匹配器与重定向路由一起使用,因为Rails会以不同方式处理重定向路由。重定向路由没有控制器,route_to对控制器进行测试。

在您的情况下,您需要使用请求规范:

describe "activation Urls" do
  before { get '/a/12341234' } 
  it { response.should redirect_to(Rails.application.config.url_homepage) }
end