Einführung:
Das gründliche Testen von HTTP-Client-Wrappern ist von entscheidender Bedeutung um ihre Robustheit zu gewährleisten. Ein Aspekt des Testens besteht darin, Fehler beim Lesen des Antworttextes zu simulieren. In Go können die häufig verwendeten Funktionen http.Client und httpClient.Get zum Senden von HTTP-Anfragen verwendet werden. Es ist jedoch wichtig zu verstehen, wie Fehler beim Lesen des Antworttexts mithilfe von httptest erzwungen werden.
Simulieren eines Fehlers beim Lesen des Antworttextes:
Um einen Fehler beim Lesen des Antworttextes zu erzwingen, muss man den ResponseWriter des beim Testen verwendeten gefälschten Servers ändern. Standardmäßig erstellt httptest.NewServer einen gefälschten Server, der gültige HTTP-Antworten sendet.
Ändern des ResponseWriter, um einen Fehler auszulösen:
Verweise auf die Response.Body-Dokumentation, eine kann feststellen, dass beim Lesen daraus möglicherweise ein Fehler zurückgegeben wird, wenn die Netzwerkverbindung fehlschlägt oder der Server die Antwort beendet. Um diesen Fehler zu simulieren, kann man vom Testhandler eine ungültige HTTP-Antwort generieren.
Beispiel:
Eine einfache Möglichkeit, eine ungültige Antwort zu generieren, besteht darin, eine falsche Antwort bereitzustellen Content-Length-Header:
handler := func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Length", "1") }
In diesem Beispiel erklärt der Handler, dass die Antwort einen Körper von einem Byte hat, sendet aber keinen Inhalt. Wenn der Client versucht, ein Byte aus dem Antworttext zu lesen, stößt er folglich auf einen unerwarteten Dateiendefehler:
Unable to read from body unexpected EOF
Schlussfolgerung:
Von Durch Ändern des Content-Length-Headers im Test-Handler ist es möglich, einen Fehler beim Lesen des Antworttexts zu simulieren, was ein gründliches Testen von HTTP-Client-Wrappern in Go ermöglicht.
Das obige ist der detaillierte Inhalt vonWie kann ich mit httptest einen Fehler beim Lesen des Antworttexts in Go simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!