Maison >développement back-end >Golang >Comment simuler une erreur lors de la lecture du corps de la réponse en Go avec httptest ?
Introduction :
Tester minutieusement les wrappers clients HTTP est crucial pour garantir leur robustesse. Un aspect des tests consiste à simuler des erreurs lors de la lecture du corps de la réponse. Dans Go, les fonctions http.Client et httpClient.Get couramment utilisées peuvent être utilisées pour envoyer des requêtes HTTP, mais il est important de comprendre comment forcer les erreurs lors de la lecture du corps de la réponse à l'aide de httptest.
Simulation d'une erreur dans Response Body Reading :
Pour forcer une erreur lors de la lecture du corps de la réponse, il faut modifier le ResponseWriter du faux serveur utilisé lors des tests. Par défaut, httptest.NewServer crée un faux serveur qui envoie des réponses HTTP valides.
Modification du ResponseWriter pour induire une erreur :
En référence à la documentation Response.Body, un peut déterminer que sa lecture peut renvoyer une erreur si la connexion réseau échoue ou si le serveur met fin à la réponse. Pour simuler cette erreur, on peut générer une réponse HTTP invalide à partir du gestionnaire de test.
Exemple :
Un moyen simple de générer une réponse invalide consiste à fournir une réponse incorrecte. En-tête Content-Length :
handler := func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Length", "1") }
Dans cet exemple, le gestionnaire déclare que la réponse a un corps d'un octet, mais n'envoie aucun contenu. Par conséquent, lorsque le client tente de lire un octet du corps de la réponse, il rencontre une erreur de fin de fichier inattendue :
Unable to read from body unexpected EOF
Conclusion :
Par en modifiant l'en-tête Content-Length dans le gestionnaire de test, il est possible de simuler une erreur lors de la lecture du corps de la réponse, permettant ainsi des tests approfondis des wrappers clients HTTP dans Go.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!