Как преобразовать строку пути в контроллер + действие + параметры?

(Я уверен, что видел ответ на этот вопрос, но не могу найти его после многих минут копания. На него должно быть легко ответить...)

мотивация

В консоли вы можете вызвать 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, но вопрос все еще стоит...]

0 ответов

Другие вопросы по тегам