我需要使用已弃用的params_from
功能。现在route_to
结合了params_from
和route_for
的行为。但我不想测试 route 生成路径,因为它没有,这是故意的(为了在旧电子邮件中向后兼容,我需要“别名”正确的控制器/动作的旧路径,但新路径生成的路径将不同。我知道,令人困惑;)
使用params_from
和route_to
时,我会得到相互矛盾的结果(也许params_for已损坏?):
# params_from(:get, 'user/tasks').should == { :controller => 'user', :action => 'tasks' }
No route matches "user/tasks" with {:method=>:get}
# { :get => 'user/tasks' }.should_not be_routable
Expected 'GET user/tasks' to fail, but it routed to {"action"=>"tasks", "controller"=>"user"} instead
路由确实存在,我可以通过UI成功使用路径。
IMO params_from
和route_for
的这种组合是一个坏主意,除非仍然支持单独的匹配。但也许我错过了一些明显的东西;)
答案 0 :(得分:0)
这就是我所寻找的,并在黑客攻击源代码时找到了它:
assert_recognizes({ :controller => 'user', :action => 'tasks'}, 'user/tasks', {}, nil)
我可能会将它包装在params_for
匹配器下。
答案 1 :(得分:0)
明确测试路由集的价值是什么?
如果你为控制器编写了一个最小的功能测试,你应该可以免费获得这个。