Questo è un problema che mi ha infastidito per qualche tempo. Sto costruendo una funzione API che dovrebbe ricevere i dati in json e la risposta in json. I test del mio controller funzionano bene (poiché ritengo che i dati arrivino già a decodificare da JSON e solo la risposta deve essere interpretata).Rails API JSON testare la richiesta POST con PARAMS in JSON
I So anche che la funzione funziona bene poiché ho usato curl per testarlo con argomenti JSON e funziona perfettamente. (esempio: curl -i --header "Accetta: application/json" --header "Content-Type: application/json" -d "{" test ": {" email ":" [email protected] "} } ')
Ma ovviamente mi piacerebbe scrivere test di richiesta (funzionalità) per testarlo automaticamente e il modo in cui lo vedo dovrebbero funzionare esattamente come curl, cioè, colpire il mio servizio come se fosse una chiamata esterna. Ciò significa che vorrei passare gli argomenti in JSON e ricevere una risposta. Sono abbastanza perso poiché tutti gli esempi posso vedere le persone trattano gli argomenti come già decodificati.
La mia domanda è: sto seguendo una premessa sbagliata nel voler inviare gli argomenti e richiedere come JSON poiché testerò che i binari funzionano, perché questa è la sua responsabilità? Ma mi piacerebbe vedere quanto sia robusto il mio codice per gli argomenti sbagliati e vorrei provare con JSON.
qualcosa di questo tipo:
it "should return an error if there is no correct email" do
params = {:subscription => {:email => "andre"}}
post "/magazine_subscriptions", { 'HTTP_ACCEPT' => "application/json", 'Content-Type' => 'application/json', 'RAW_POST_DATA' => params.to_json }
end
Sapete come questo sia possibile? e per favore fatemi sapere se pensate che sto provando male.
tutto il meglio,
Andre
Per brevità, lo scrivo come 'post '/ magazine_subscriptions', params.to_json, formato:: json'. – user664833
@ user664833 è più elegante – Tudorizer
Non penso che .to_json sia necessario se lo stai già formattando come un oggetto json. Penso che dovrebbe essere "post"/magazine_subscriptions ", params, formato:: json' –