Dans le test unitaire de Laravel, je peux tester une API JSON comme celle-ci:
$this->post('/user', ['name' => 'Sally'])
->seeJson([
'created' => true,
]);
Mais que faire si je veux utiliser la réponse. Comment obtenir la réponse JSON (sous forme de tableau) à l'aide de $this->post()
?
Actuellement en 5.3 cela fonctionne ...
$content = $this->get('/v1/users/1')->response->getContent()
;
Cela casse la chaîne, cependant, puisque response
renvoie la réponse et non le programme d'exécution. Donc, vous devriez faire vos assertions chaînables avant d'aller chercher la réponse, comme ça ...
$content = $this->get('/v1/users/1')->seeStatusCode(200)->response->getContent()
;
Le moyen approprié pour obtenir le contenu est:
$content = $this->get('/v1/users/1')->decodeResponseJson();
Je rencontre un problème similaire et je ne peux pas utiliser $ this-> getResponse () -> getContent () avec la méthode intégrée $ this-> get () J'ai essayé plusieurs variantes sans succès.
Au lieu de cela, j'ai dû modifier l'appel pour renvoyer la réponse http complète et en extraire le contenu.
// Original (not working)
$content = $this->get('/v1/users/1')->getContent();
// New (working)
$content = $this->call('GET', '/v1/users/1')->getContent();
J'aime utiliser la méthode json lorsque json est utilisé, au lieu de -> get ()
$data = $this->json('GET', $url)->seeStatusCode(200)->decodeResponseJson();
Je veux juste partager, j'ai utilisé la même chose dans $this->json()
comme:
$response = $this->json('POST', '/order', $data)->response->getContent();
Mais j'ai ajouté une ligne supplémentaire pour utiliser la réponse json et décoder sinon decodeResponseJson()
ne fonctionnait pas pour moi.
$json = json_decode($response);
Trouvé un meilleur moyen:
$response = $this->json('POST', '/order', $data)->response->getOriginalContent();
Cette méthode retourne la réponse sous forme de tableau.