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
Freigeben: 2024-12-15 08:15:15
Original
565 Leute haben es durchsucht

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)
Nach dem Login kopieren

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"}`)
}))
Nach dem Login kopieren

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()
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage