2011-04-12 15 views
12

que tienen un controlador simple que especifica:Carriles 3 - Pruebas método GET del controlador - tratando de usar JSON y conseguir errores 406

respond_to :json 

Cuando intento de construir una prueba funcional que lo llama así:

test "GET" do 
    get 'index', :format => :json 
end 

Todo funciona bien. Si, sin embargo, trato de pasar un parámetro de consulta de la siguiente manera:

test "GET" do 
    get 'index', {:my_param = '1234'}, :format => :json 
end 

me sale un error 406 devuelto desde el controlador. Si descargo la respuesta a través de response.inspect, puedo ver que el @status = 406 y el @header tienen un tipo de contenido de text/html. Si descargo la respuesta a través del response.inspect para el caso simple que no pasa un parámetro de consulta, veo que el @header tiene un tipo de contenido application/json como solicito en el código.

¿Alguien tiene alguna idea de lo que estoy haciendo mal aquí? Sospecho que estoy arruinando la sintaxis de ruby ​​con hashes o algo así, pero estoy golpeando mi cabeza contra la pared y no estoy llegando a ninguna parte.

Estoy en una Mac con Ruby 1.9 y Rails 3.0.5.

¡Gracias de antemano!

Respuesta

26

Esta es la función que está llamando:

get(action, parameters = nil, session = nil, flash = nil) 

La parte :format sigue siendo un parámetro, ciertamente no una sesión o flash. Proveedores:

get 'index', {:my_param => '1234', :format => :json} 

Oh, nota importante, el uso '=>', no '=' ... eso es un hash, no una asignación.

+0

Eso lo hizo. ¡Gracias! – Bryan

Cuestiones relacionadas