RSpec:测试路由映射的路径(但不是相反)

时间:2010-07-15 09:53:26

标签: ruby-on-rails rspec routes

我需要使用已弃用的params_from功能。现在route_to结合了params_fromroute_for的行为。但我不想测试 route 生成路径,因为它没有,这是故意的(为了在旧电子邮件中向后兼容,我需要“别名”正确的控制器/动作的旧路径,但新路径生成的路径将不同。我知道,令人困惑;)

使用params_fromroute_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_fromroute_for的这种组合是一个坏主意,除非仍然支持单独的匹配。但也许我错过了一些明显的东西;)

2 个答案:

答案 0 :(得分:0)

这就是我所寻找的,并在黑客攻击源代码时找到了它: assert_recognizes({ :controller => 'user', :action => 'tasks'}, 'user/tasks', {}, nil)

我可能会将它包装在params_for匹配器下。

答案 1 :(得分:0)

明确测试路由集的价值是什么?

如果你为控制器编写了一个最小的功能测试,你应该可以免费获得这个。