Я разрабатываю движок Rails для своей компании, который предоставляет API для приложений, которые мы запускаем.Мы все еще используем Rails 3.0.9, с последней версией Rspec-Rails (2.10.1).У меня была похожая проблема, в которой я определил маршруты следующим образом:
match '/companyname/api_name' => 'CompanyName/ApiName/ControllerName#apimethod'
У меня была похожая ошибка:
ActionController::RoutingError:
No route matches {:controller=>"company_name/api_name/controller_name", :action=>"apimethod"}
Я потратил много времени, пытаясь выяснить,как заставить мой тест работать.Различные версии Rspec, переопределение моего маршрута с использованием вложенных областей и т. Д.
Оказывается, мне просто нужно было переопределить мой маршрут в случае подчеркивания, чтобы RSpec мог его сопоставить.
match '/companyname/api_name' => 'company_name/api_name/controller_name#apimethod'
IПредположим, что в тестах контроллера Rspec используется обратный поиск, основанный на регистре подчеркивания, тогда как Rails установит и интерпретирует маршрут, если вы определите его в регистре верблюдов или подчеркивании.