Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menguji Panggilan HTTP dengan Berkesan dalam Go Menggunakan Pakej `httptest`?
Cara Menguji Panggilan HTTP dalam Go Menggunakan httptest
Dalam Go, pakej httptest menawarkan cara yang mudah untuk menguji panggilan HTTP anda. Ia menyediakan kedua-dua ujian respons dan pelayan untuk pemeriksaan menyeluruh kefungsian HTTP aplikasi anda.
Ujian Respons
Ujian respons memfokuskan pada mengesahkan respons itu sendiri. Sebagai contoh, anda boleh mengesahkan kod status, pengepala dan kandungan respons. Berikut ialah contoh:
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 ... }
Ujian Pelayan
Ujian pelayan, sebaliknya, membolehkan anda menguji keseluruhan pelayan HTTP, termasuk laluan dan pengendalinya. Pendekatan ini boleh berguna untuk menguji aliran permintaan melalui aplikasi anda. Berikut ialah contoh menggunakan kaedah 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 ... }
Dalam kes khusus anda, anda boleh menggunakan ujian pelayan untuk mengejek API carian Twitter dengan respons yang boleh diramal. Ini membolehkan anda menguji fungsi anda tanpa membuat panggilan HTTP sebenar.
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 ... }
Ingat bahawa parameter r dalam fungsi retrieveTweets anda sudah pun menjadi penunjuk, jadi tidak perlu menghantarnya sebagai penunjuk dalam json.Unmarshal .
Atas ialah kandungan terperinci Bagaimana untuk Menguji Panggilan HTTP dengan Berkesan dalam Go Menggunakan Pakej `httptest`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!