2013-09-05 60 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是否工作,沒有意義。 –