Maison >développement back-end >Golang >Comment simuler une erreur lors de la lecture du corps de la réponse en Go avec httptest ?

Comment simuler une erreur lors de la lecture du corps de la réponse en Go avec httptest ?

DDD
DDDoriginal
2024-10-27 05:54:29620parcourir

How to Simulate an Error While Reading the Response Body in Go with httptest?

Comment simuler une erreur lors de la lecture du corps de la réponse dans Go

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn