Ruby on rails 自定义匹配的RSpec路由规范失败

Ruby on rails 自定义匹配的RSpec路由规范失败,ruby-on-rails,rspec,Ruby On Rails,Rspec,使用自定义URL匹配器进行RSpec测试失败 routes.rb: get 'a/:code' => redirect(Rails.application.config.url_homepage) 等级库/布线/布线\u布线\u等级库rb describe 'routing' do describe "activation Urls" do it "redirects /a/:code to the public homepage" do get('/a/123

使用自定义URL匹配器进行RSpec测试失败

routes.rb:

get 'a/:code' => redirect(Rails.application.config.url_homepage)
等级库/布线/布线\u布线\u等级库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)>'
1)路由激活URL重定向/a/:代码到公共主页
失败/错误:get('/a/12341234')。应将_路由到(Rails.application.config.url_主页)
没有路线匹配“/a/12341234”
#./spec/routing/routes\u routing\u spec.rb:7:in'block(3层)in'
路由工作-一旦我在浏览器中打开这样的URL,我将被正确重定向


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

不能将
route\u与重定向路由一起使用到
matcher,因为Rails处理重定向路由的方式不同。重定向路由没有控制器,其中
route_to
test to/from A controller

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

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

嘿,你真的想测试路线吗?我以前从未见过应用程序测试路线。我发现做集成测试或控制器测试更有用。是的。特别是在这种情况下,需要对重定向进行验证。是否要使用前导斜杠或删除前导斜杠?用它来试验可能会解决这个问题。@DavidGrayson是的,我在这里尝试了所有的组合,但运气不好。如前所述,它是有效的,只是RSpec失败了。你能告诉我你的RSpec版本吗?