ruby-on-rails json testing rspec

ruby on rails - ¿Cómo se configuran los encabezados de solicitud en la especificación de solicitud de rspec?



ruby-on-rails json (9)

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 solicitud, el objeto "solicitud" es nulo. Entonces, ¿cómo puedo hacerlo aquí?

La razón por la que quiero configurar http accept header to json es para que pueda hacer esto:

get ''/my/path''

en lugar de esto

get ''/my/path.json''



Estoy agregando esto aquí, ya que me he quedado muy atrapado 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 palabra clave, es decir,

get /some/path, headers: {''ACCEPT'' => ''application/json''}

FYI, el conjunto completo de argumentos de palabras clave son:

params: {}, headers: {}, env: {}, xhr: false, as: :symbol


Lo usé en Test :: Unit:

@request.env[''HTTP_ACCEPT''] = "*/*, application/youtube-client" get :index


Para enviar ambos xhr: true y encabezados, tuve que hacer, por ejemplo:

headers = { "HTTP_ACCEPT": "application/json" } get my_path, xhr: true, headers: my_headers


Para mí está funcionando simple request.headers["My Header"] = "something"


Pruebe algo como:

get :index, :format => ''json''


Su pregunta ya fue respondida, pero en caso de que desee PUBLICAR algo para otra acción, debe hacer esto:

post :save, {format: :json, application: {param1: "test", param2: "test"}}


Tengo que configurar encabezados por separado

request.headers["Accept"] = "application/json"

Intentar enviarlo a través de get / delete / .... es basura completa en rails4 y me causa dolor en la cabeza porque nunca se envía como encabezado sino como parámetro.

{"Accept" => "application/json"}


Usando rspec con Rack::Test::Methods

header ''X_YOUR_HEADER_VAR'', ''val'' get ''/path''

La varilla del encabezado aparecerá como X-Your-Header-Var