Teste funcional de trilhos de URLs arbitrários ou personalizados
Eu tenho um recurso RESTful no meu aplicativo Rails chamado "Foto". estou a usarClipe de papel para servir diferentes "estilos" de minhas fotos (para miniaturas e semelhantes), e estou usando uma rota personalizada para acessar RESTfully esses estilos:
map.connect "photos/:id/style/*style", :controller => "photos", :action => "show"
Isso está funcionando bem, mas quero escrever um teste para garantir que continue assim.
Eu já tenho um teste funcional para chamar a ação de show do Photo Controller (gerada pelo scaffold de fato):
test "should show photo" do
get :show, :id => photos(:one).to_param
assert_response :success
end
Isso testa a execução da ação no URL "/ photo / 1". Agora quero testar a execução da URL "/ photo / 1 / style / foo". Infelizmente, não consigo fazer com que o ActionController :: TestCase acesse essa URL; o método get sempre deseja uma ação / id e não aceita um sufixo de URL.
Como faço para testar um URL personalizado?
AtualizarEnquanto checava a resposta de @ fernyb, encontrei este trecho emo mesmo rdoc
Nos testes, você pode simplesmente passar o URL ou a rota nomeada para obter ou postar. def send_to_jail get '/ jail' assert_response: sucesso assert_template "jail / front" end
No entanto, quando eu realmenteexperimentar isso, recebo uma mensagem de erro:
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"}
Eu me pergunto se estou fazendo algo errado.