En la especificación del controlador, puedo configurar el encabezado http accept de esta manera:
request.accept = "application/json"
pero en la especificación de la solicitud, el objeto "solicitud" es nulo. Entonces, ¿cómo puedo hacerlo aquí?
La razón por la que quiero establecer el encabezado http accept en json es para poder hacer esto:
get '/my/path'
en lugar de esto
get '/my/path.json'
ruby-on-rails
json
testing
rspec
Sergey
fuente
fuente
get '/my/path', nil, {'HTTP_ACCEPT' => "application/json"}
:authorization
.get my_resource_path, params: {}, headers: { 'HTTP_ACCEPT' => "application/json" }
`Usé esto en Test :: Unit:
fuente
ActionController::TestCase
Cookie
en el hash de encabezado (porque eso es lo que envía mi navegador), pero no funcionó. Entonces lo hicerequest.keys
y vi una llave llamadaHTTP_COOKIE
. Usar eso funcionó. Realmente deberían documentar esto mejor.Estoy agregando esto aquí, ya que me quedé atascado tratando de hacer esto en Rails 5.1.rc1
La firma del método get es ligeramente diferente ahora.
Debe especificar las opciones después de la ruta como argumentos de palabras clave, es decir
get /some/path, headers: {'ACCEPT' => 'application/json'}
Para su información, el conjunto completo de argumentos de palabras clave son:
params: {}, headers: {}, env: {}, xhr: false, as: :symbol
fuente
Esto funciona para las especificaciones del controlador, no para solicitar especificaciones:
fuente
request.headers
orequest.env
Tengo que configurar los encabezados por separado
Intentar enviarlo a través de get / delete / .... es basura completa en rails4 y causa dolor en mi cabeza porque nunca se envía como encabezado sino como parámetro.
fuente
Usando rspec con
Rack::Test::Methods
El encabezado var aparecerá como
X-Your-Header-Var
fuente
Test::Unit
, no para RSpec.ndefined method 'header'
error para mí.Con RSpec 3 puede usar la siguiente sintaxis
Como se describe en la documentación oficial de Rspec (el enlace apunta a v3.7)
fuente
Para enviar ambos
xhr: true
y encabezados, tuve que hacer, por ejemplo:fuente
headers =
sermy_headers =
?Su pregunta ya fue respondida, pero en caso de que desee PUBLICAR algo en otra acción, debe hacer esto:
fuente
Intenta algo como:
fuente
format=json
como un parámetro de consulta. No es lo mismo que un campo de encabezado.