So testen Sie HTTP-Aufrufe in Go mit httptest
Einführung
HTTP-Tests in Go kann mit dem httptest-Paket erleichtert werden. In diesem Artikel wird erläutert, wie Sie httptest für Antwort- und Servertests nutzen können, einschließlich eines detaillierten Beispiels für Servertests.
Testtypen
httptest bietet zwei Kategorien von Tests:
Antworttest
Beim Antworttest erfasst ein Recorder-Objekt die Antwort und ihren Inhalt. Der folgende Codeausschnitt demonstriert einen Antworttest:
resp := httptest.NewRecorder() req, _ := http.NewRequest("GET", "/3D/header/?", nil) http.DefaultServeMux.ServeHTTP(resp, req)
Servertest
Für Servertests simuliert httptest einen Server und stellt eine URL bereit, die verwendet werden kann:
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, `{"fake twitter json string"}`) }))
In diesem Beispiel wird ein Server erstellt, der mit vordefinierten JSON-Daten antwortet. Die URL dieses Servers kann dann in der zu testenden Anwendung verwendet werden.
Beispiel: Testen von HTTP-Aufrufen in RetrieveTweets
So testen Sie die RetrieveTweets-Funktion:
func TestIt(t *testing.T){ ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, `{"fake twitter json string"}`) })) defer ts.Close() twitterUrl = ts.URL c := make(chan *twitterResult) go retrieveTweets(c) tweet := <-c if tweet != expected1 { t.Fail() } tweet = <-c if tweet != expected2 { t.Fail() } }
Indem wir den Server verspotten, können wir die von der RetrieveTweets-Funktion empfangenen Ergebnisse überprüfen.
Das obige ist der detaillierte Inhalt vonWie teste ich HTTP-Aufrufe in Go effektiv mit „httptest'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!