我有一个路由,我使用约束来检查主机,然后是一个本质上相同但没有主机限制的路由(这些实际上是命名空间,但是使事情变得简单这个例子也可以):定义主机,做时通过浏览器和集成测试访问时通过Rails中的assert_routing测试具有主机约束的路由
match "/(:page_key)" => "namespace_one/pages#show", :constraints => proc {|env| env['SERVER_NAME'] == 'test.mysite.local' }
match "/(:page_key)" => "namespace_two/pages#show"
这些工作完全按预期get "/page_key"
等
但是我想写确保这些测试路线工作到目前为止我没有多少运气,因为下面的测试(目前在在限制PROC我得到的是--- :controller
assert_routing '', { :controller => 'namespace_one/pages', :action => 'show' }
=> The recognized options <{"action"=>"show", "controller"=>"frontend/pages"}>
did not match <{"action"=>"show", "controller"=>"namespace_two/pages"}>,
difference: <{"controller"=>"namespace_one/pages"}>
如果我尝试倾销ENV:,所以我可以设置主机)不匹配的约束之一。
如果我摆脱了assert_routing,只是做一个get :show
调用并转储@controller
它确实解析到正确的控制器(如预期的,因为这些路由都可以通过HTTP请求正常工作)。