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

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

Patricia Arquette
Freigeben: 2024-12-16 09:25:11
Original
655 Leute haben es durchsucht

How to Effectively Test HTTP Calls in Go Using the `httptest` Package?

So testen Sie HTTP-Aufrufe in Go mit httptest

In Go bietet das httptest-Paket eine praktische Möglichkeit, Ihre HTTP-Aufrufe zu testen. Es bietet sowohl Antwort- als auch Servertests zur gründlichen Prüfung der HTTP-Funktionalität Ihrer Anwendung.

Antworttests

Antworttests konzentrieren sich auf die Validierung der Antwort selbst. Sie können beispielsweise den Statuscode, die Header und den Inhalt der Antwort überprüfen. Hier ein Beispiel:

func TestHeader3D(t *testing.T) {
    resp := httptest.NewRecorder()
    // ... setup the request with headers and parameters ...
    http.DefaultServeMux.ServeHTTP(resp, req)
    // ... assert the response body and content type ...
}
Nach dem Login kopieren

Servertests

Mit Servertests können Sie im Gegensatz dazu den gesamten HTTP-Server einschließlich seiner Routen und Handler testen. Dieser Ansatz kann zum Testen des Anforderungsflusses durch Ihre Anwendung nützlich sein. Hier ist ein Beispiel für die Verwendung der Methode httptest.NewServer():

func TestIt(t *testing.T) {
    ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // ... your handler setup and response ...
    }))
    defer ts.Close()
    // ... setup your requests and make assertions based on the responses ...
}
Nach dem Login kopieren

In Ihrem speziellen Fall können Sie Servertests verwenden, um die Twitter-Such-API mit einer vorhersehbaren Antwort zu simulieren. Dadurch können Sie Ihre Funktion testen, ohne tatsächliche HTTP-Aufrufe durchzuführen.

func TestRetrieveTweets(t *testing.T) {
    ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // Set up your mock response for the Twitter API ...
    }))
    defer ts.Close()
    twitterUrl = ts.URL
    c := make(chan *twitterResult)
    go retrieveTweets(c)
    // ... assert the results you receive in the `c` channel ...
}
Nach dem Login kopieren

Denken Sie daran, dass der r-Parameter in Ihrer RetrieTweets-Funktion bereits ein Zeiger ist, sodass es nicht nötig ist, ihn als Zeiger in json.Unmarshal zu übergeben .

Das obige ist der detaillierte Inhalt vonWie teste ich HTTP-Aufrufe in Go effektiv mit dem Paket „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