Как преобразовать строку пути в контроллер + действие + параметры?
(Я уверен, что видел ответ на этот вопрос, но не могу найти его после многих минут копания. На него должно быть легко ответить...)
мотивация
В консоли вы можете вызвать get
метод с аргументом пути, такой как:
app.get posts_path(321)
Это вызывает ActionDispatch::Integration::RequestHelpers#get
, который преобразует "/posts/321" в соответствующий контроллер и действие и параметры, например {:controller => "posts",:action => "show",:id => "321"}.
Но вы не можете сделать это в тестах контроллера. Чтобы получить тот же эффект, вам нужно:
get :show, :id => "321"
Это потому что get
метод определяется ActionController::TestCase#get
, который ожидает, что действие и параметры уже будут проанализированы.
Я могу написать свои тесты, где я вручную заполняю: controller,: action и любые параметры, но это кажется хорошим способом введения ошибок.
вопрос
Есть ли метод, который будет анализировать строку (например, вызов posts_path(321)
) в соответствующий: контроллер, действие и параметры, подходящие для передачи ActionController::TestCase#get
?
Это сделает написание тестов более простым и менее подверженным ошибкам.
[EDIT: я понимаю, что вам нужен HTTP-глагол (get
) а также путь (/posts/321
) однозначно сопоставить с: controller и: action, но вопрос все еще стоит...]