Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menguji Panggilan HTTP dengan Berkesan dalam Go menggunakan `httptest`?

Bagaimana untuk Menguji Panggilan HTTP dengan Berkesan dalam Go menggunakan `httptest`?

Barbara Streisand
Barbara Streisandasal
2024-12-15 08:15:15565semak imbas

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

Cara Menguji Panggilan HTTP dalam Go Menggunakan httptest

Pengenalan

Ujian HTTP dalam Go boleh dipermudahkan menggunakan pakej httptest. Artikel ini meneroka cara memanfaatkan httptest untuk respons dan ujian pelayan, termasuk contoh terperinci ujian pelayan.

Jenis Ujian

httptest menyediakan dua kategori ujian:

  • Ujian respons: Mengesahkan respons HTTP yang diterima daripada permintaan.
  • Ujian pelayan: Meniru pelayan untuk menguji interaksi HTTP dengan aplikasi yang sedang diuji.

Ujian Respons

Dalam ujian tindak balas, objek Perakam menangkap respons dan kandungannya. Coretan kod berikut menunjukkan ujian respons:

resp := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/3D/header/?", nil)

http.DefaultServeMux.ServeHTTP(resp, req)

Ujian Pelayan

Untuk ujian pelayan, httptest mensimulasikan pelayan dan menyediakan URL yang boleh digunakan:

ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, `{"fake twitter json string"}`)
}))

Dalam contoh ini, pelayan yang bertindak balas dengan data JSON yang dipratentukan dibuat. URL pelayan ini kemudiannya boleh digunakan dalam aplikasi yang sedang diuji.

Contoh: Menguji Panggilan HTTP dalam retrieveTweets

Untuk menguji fungsi retrieveTweets:

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()
    }
}

Dengan mengejek pelayan, kami boleh mengesahkan keputusan yang diterima oleh retrieveTweets fungsi.

Atas ialah kandungan terperinci Bagaimana untuk Menguji Panggilan HTTP dengan Berkesan dalam Go menggunakan `httptest`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn