目前我正在从Rails 2.3.smthn升级到Rails 3.0。该应用程序有 200+ 个路由,在使用新的路由器 API 重写路由之前,我想为路由编写 (RSpec) 测试。
因为有很多路线,为它们编写覆盖范围将是很多"繁重的工作",我想知道是否有办法为这些路线生成测试?
我会用rake routes
列出你当前的路由,然后写一个小的Ruby程序来解析每一行并生成你想要的测试,形式如下:
expect(:get => "/articles/2012/11/when-to-use-routing-specs").to route_to(
:controller => "articles",
:month => "2012-11",
:slug => "when-to-use-routing-specs"
)
如 https://www.relishapp.com/rspec/rspec-rails/docs/routing-specs 中所述
但是,我不确定如何测试命名路由,或者如何测试没有定义其他路由。您可能希望通过一个测试来补充这一点,该测试将 rake routes
的先前输出与 rake routes
的当前输出进行比较。
我和我的同事写了一个 gem,可以在 Rails 应用程序中为每条路线生成路线规范,您可以在此处查看源代码并获取。