2013-09-05 59 views
0

我期待为足智多谋的途径创造DRY早该风格的匹配:确定Rails的资源型路线

it { should resource(:users) } 
it { should resource(:articles), only: 'index' } 

有没有一种方法来确定是否一系列路由都通过resourceful routing创造的呢?

我认为是发生在一个孤立的引擎的预期路线比较的另类:

class RouteTestEngine < Rails::Engine; end 

RouteTestEngine.routes.draw do 
    resources :users 
end 

# A *very* rough draft of the assertion that would follow: 
expect(Rails.application.routes.named_routes).to include RouteTestEngine.routes.named_routes 

回答

1

它似乎并不像你这样在这里测试有用的东西,只是验证您所键入的路线正确地通过第二次输入。

标准路由规格的匹配会更好: https://www.relishapp.com/rspec/rspec-rails/v/2-14/docs/routing-specs

它们允许你以确保每个途径去的地方,你想要的话,甚至产生resource的那些。

+0

“......只是验证您是否通过第二次输入正确地键入了路线......”并且规范所需的路线已经创建在第一位。我的目标是使规格变得干燥,并避免为每条足智多谋的路线重复使用不规范的规范块。标准匹配器对于更多“唯一”路由(例如'/登录')是有意义的。 – fny

+0

我第二个这个答案。基本上你使用Shoulda来测试Rails是否工作,没有意义。 –