139 votes

Comment définir les en-têtes de requête dans la spécification de requête rspec?

Dans la spécification du contrôleur, je peux définir http accept header comme ceci:

 request.accept = "application/json"
 

mais dans la spécification de requête, l'objet "request" est nil. Alors, comment puis-je le faire ici?

La raison pour laquelle je veux définir http accept header sur json est que je peux le faire:

 get '/my/path'
 

au lieu de cela

 get '/my/path.json'
 

139voto

awaage Points 914

Vous devriez pouvoir spécifier des en-têtes HTTP comme troisième argument de votre méthode get (), comme décrit ici:

http://api.rubyonrails.org/classes/ActionDispatch/Integration/RequestHelpers.html#method-i-get

Donc, vous pouvez essayer quelque chose comme ceci:

 get '/my/path', nil, {'HTTP_ACCEPT' => "application/json"}
 

40voto

Sytse Sijbrandij Points 575

Je l'ai utilisé dans Test :: Unit:

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

22voto

morgoth Points 646

Pour moi, ça marche simple request.headers["My Header"] = "something"

2voto

gayavat Points 3169

Essayez quelque chose comme: get: index,: format => 'json'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X