Heim >Backend-Entwicklung >Golang >Wie simuliert man Fehler beim Lesen des Antworttexts beim Testen von Go-HTTP-Clients?

Wie simuliert man Fehler beim Lesen des Antworttexts beim Testen von Go-HTTP-Clients?

Susan Sarandon
Susan SarandonOriginal
2024-10-31 17:21:30944Durchsuche

How to Simulate Response Body Read Errors in Go HTTP Client Testing?

Fehler beim Lesen des Antworttextes erzwingen

Um die Gründlichkeit eines HTTP-Client-Wrappers in Go zu testen, müssen verschiedene Szenarien simuliert werden, einschließlich Fehlern beim Lesen des Antwortkörper. Der bereitgestellte Codeausschnitt geht von einem gefälschten Server-Setup mit einem benutzerdefinierten Handler aus. Um einen Lesefehler für den Antworttext zu erzwingen, muss der Handler geändert werden.

Untersuchung der Antworttextdokumentation

Laut der Dokumentation von Response.Body a Der Lesevorgang kann in den folgenden Szenarien einen Fehler zurückgeben:

  • Netzwerkverbindungsfehler
  • Serverbeendigung von die Antwort

Auslösen eines Fehlers durch eine ungültige HTTP-Antwort

Die einfachste Methode, einen Fehler herbeizuführen, besteht darin, eine ungültige HTTP-Antwort zu generieren. Wenn Sie beispielsweise den Content-Length-Header auf einen Wert ungleich Null setzen und keinen tatsächlichen Inhalt senden, kommt es zu einem unerwarteten EOF-Fehler, wenn der Client versucht, den Text zu lesen.

Beispiel für einen fehlgeschlagenen Handler

Hier ist ein Beispielhandler, der dies tut:

<code class="go">handler := func(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Length", "1")
}</code>

Erwartet Fehler

Wenn der Client versucht, den Textkörper von diesem Handler zu lesen, tritt der folgende Fehler auf:

Unable to read from body unexpected EOF

Dieser Ansatz erzwingt effektiv die Operation ioutil.ReadAll im Wrapper zu scheitern, indem ein realistisches Fehlerszenario simuliert wird, das während der Netzwerkkommunikation auftreten kann.

Das obige ist der detaillierte Inhalt vonWie simuliert man Fehler beim Lesen des Antworttexts beim Testen von Go-HTTP-Clients?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn