В моем приложении Rails есть ресурс RESTful под названием «Фото». Я использую скрепку для отображения разных «стилей» моих фотографий (для миниатюр и т.п. ), и я использую собственный маршрут для RESTful доступа к этим стилям:
map.connect "photos/:id/style/*style", :controller => "photos", :action => "show"
Это работает нормально, но я хочу написать тест, чтобы убедиться, что так и будет.
У меня уже есть функциональный тест для вызова действия show контроллера Photo (фактически сгенерированного scaffold):
test "should show photo" do
get :show, :id => photos(:one).to_param
assert_response :success
end
Это проверяет выполнение действия по URL-адресу "/ photo / 1". Теперь я хочу проверить выполнение URL "/ photo / 1 / style / foo". К сожалению, я не могу заставить ActionController :: TestCase попасть по этому URL-адресу; метод get всегда хочет действие / идентификатор и не принимает суффикс URL.
Как мне протестировать собственный URL-адрес?
Обновлять
Проверяя ответ @fernyb, я нашел этот фрагмент в том же rdoc
В тестах вы можете просто передать URL-адрес или именованный маршрут для получения или публикации. def send_to_jail get '/ jail' assert_response: success assert_template "тюрьма / интерфейс"
Однако когда я действительно пытаюсь это сделать, я получаю сообщение об ошибке:
test "should get photo" do
get "/photos/1/style/original"
assert_equal( "image/jpeg", @response.content_type )
end
ActionController::RoutingError: No route matches {:action=>"/photos/1/style/original", :controller=>"photos"}
Интересно, а я что-то не так делаю.