Heim >Backend-Entwicklung >Golang >Wie teste ich HTTP-Aufrufe in Go effektiv mit „httptest'?

Wie teste ich HTTP-Aufrufe in Go effektiv mit „httptest'?

Barbara Streisand
Barbara StreisandOriginal
2024-12-15 08:15:15565Durchsuche

How to Effectively Test HTTP Calls in Go using `httptest`?

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:

  • Antworttests: Überprüft die von einem empfangene HTTP-Antwort Anfrage.
  • Servertests: Emuliert einen Server, um HTTP-Interaktionen mit der getesteten Anwendung zu testen.

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!

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