Posted at

namespaced routeのspecが通らない

More than 5 years have passed since last update.

Railsでnamespaceをつかったルート定義をすると、specが落ちまくる件について。


起こった問題

route.rbでnamespaceを使ったルートを定義します。


config/routes.rb

namespace :user do

resources :administrators
end

すると、requestやroutingまわりのspecで


  • NoMethodError: undefined method 'user_administrators_path'

  • ActionController::RoutingError: No route matches {:controller=>"user/administrators"}

みたいなエラーが吐かれます。

また、これに付随してcontrollerのテストも落ちまくります。


何が原因なのか



  • bundle exec rake routesしてみる → 正常

  • ブラウザでlocalhost:3000/user/administratorsにアクセス → 正常

  • Viewに名前付きルート(named route)を使ったリンクを張ってみる → 正常

 → spec実行時にroute.rbが正常に読みこまれてない?


解決方法

route.rbが正常に読みこまれていないようなので、spec_helper.rbで強制的に読みこませることにしました。


spec/spec_helper.rb

Spork.each_run do

load "#{Rails.root}/config/routes.rb"
end

これでspecが落ちないようになりました。