Вызов Rails.application.routes.recognize_path в тесте rspec не соответствует ни одному маршруту в Rails 3 - PullRequest
4 голосов
/ 11 января 2011

Приложение Rails 3, над которым я работаю, содержит некоторую логику, которая вызывает следующий код (который я не могу изменить):

Rails.application.routes.recognize_path("/customers", :method => :get)

«Клиенты», конечно, переменные.

Я пишу связанный тест Rspec, который вызывает код, содержащий указанную логику, и тест имеет полную среду Rails. Когда я поднимаю следующее:

Rails.application.routes.routes.inspect

содержит правильные маршруты (например, один из маршрутов "GET /customers").

Когда я запускаю тест, логика приводит к:

No route matches "/customers"

Выполнение следующих действий:

@routes = Rails.application.routes
assert_recognizes({:controller => "customers", :action => "index"}, "/customers")

приводит к той же ошибке.

В рамках вспомогательного теста, следующее:

# this succeeds and returns "/customers"
x = helper.customers_path
Rails.application.routes.recognize_path(x, :method => :get)

снова приводит к той же ошибке (не найдено ни одного маршрута "/ клиенты")

Я на 100% уверен, что Rails.application.routes содержит правильные маршруты.

Кто-нибудь знает, в чем причина?

Спасибо!

1 Ответ

3 голосов
/ 14 февраля 2011

Наконец-то наткнулся на причину этой глупой самоиндуцированной ошибки: забыл определить CustomerController, с которым сопоставляются маршруты.

После погружения в источник Rails обнаружил, что маршрутизация фактически соответствует контроллеру, сопоставленному с маршрутами, поэтому в ваших спецификациях требуется фактический контроллер для сопоставления. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...