使用自定义网址匹配器进行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,我将被正确重定向。
我是否错过了一个至关重要的细节?
答案 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