J'aimerais tester avec RSpec un contrôleur recevant ce type de demande:test un contrôleur avec un corps distinct et querystring params
curl -X POST \
--data "{\"same_key\": \"value_in_body\"}" \
--header "same_key: value_in_header" \
"http://localhost:5000/articles/?same_key=value_in_querystring"
ayant:
same_key
dans le corpssame_key
dans l'en-têtesame_key
dans le querystring
et où:
request.request_parameters["same_key"]
:"value_in_body"
request.headers["same_key"]
:"value_in_header"
request.query_parameters["same_key"]
:"value_in_querystring"
j'ai écrit ce test:
RSpec.describe ArticlesController, type: :controller do
describe '#create' do
it 'creates an article' do
post :post,
as: :json,
params: { same_key: 'value_in_body' },
headers: { same_key: 'value_in_header' }
expect(response).to have_http_status(:created)
end
end
end
Jusqu'à présent, ce serait bon pour le corps param et le en-tête param.
Mais comment devrions-nous faire pour envoyer le querystring param?
Je le sais. Mais alors comment pouvons-nous faire pour ne pas surcharger le _body_ param (parce que les deux ont la même clé)? –
Oui, j'ai compris, parce que c'est une demande de publication. Ainsi, au lieu d'utiliser le nom de l'action, vous pouvez utiliser le modèle RUI comme 'sessions /' que vous pouvez obtenir à partir des routes rake. – Mohanraj
Ce modèle est utilisé par les tests de demande de RSpec. Dans le contexte d'un test de contrôleur RSpec, le premier argument doit être une action, pas un chemin. –