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
Lepaskan: 2024-12-15 08:15:15
asal
563 orang telah melayarinya

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)
Salin selepas log masuk

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"}`)
}))
Salin selepas log masuk

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()
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan