В моем приложении на 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 всегда хочет action / id и не принимает суффикс URL.
Как мне проверить пользовательский URL?
Обновление
При проверке ответа @ fernyb я нашел этот фрагмент в том же rdoc
В тестах вы можете просто передать URL или именованный маршрут, чтобы получить или опубликовать.
def send_to_jail
получить '/ тюрьма'
assert_response: успех
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"}
Интересно, я что-то не так делаю.