Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah anda menguji pelayan HTTP dengan permintaan langsung dalam Go menggunakan httptest.Server?

Bagaimanakah anda menguji pelayan HTTP dengan permintaan langsung dalam Go menggunakan httptest.Server?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 08:01:30618semak imbas

How do you test an HTTP server with live requests in Go using httptest.Server?

Menguji Pelayan HTTP dengan Permintaan Langsung dalam Go

Ujian langsung pelayan HTTP membolehkan anda mengesahkan kefungsian titik akhir anda secara nyata -persekitaran dunia. Pendekatan ini amat berguna apabila pelayan anda bergantung pada perkhidmatan luaran atau menggunakan logik penghalaan yang kompleks.

Menggunakan net/http/httptest.Server untuk Ujian Langsung

Net/ http/httptest.Jenis pelayan dalam perpustakaan standard Go menyediakan cara untuk mencipta pelayan HTTP secara langsung untuk tujuan ujian. Begini cara anda boleh menggunakannya:

<code class="go">// Create a router that will be used for testing.
router := mux.NewRouter()

// Create a test server using the router.
ts := httptest.NewServer(router)

// Send test requests to the server.
newreq := func(method, url string, body io.Reader) *http.Request {
    r, err := http.NewRequest(method, url, body)
    if err != nil {
        t.Fatal(err)
    }
    return r
}

tests := []struct {
    name string
    r    *http.Request
}{
    {name: "1: testing get", r: newreq("GET", ts.URL+"/", nil)},
    {name: "2: testing post", r: newreq("POST", ts.URL+"/", nil)},
}

for _, tt := range tests {
    t.Run(tt.name, func(t *testing.T) {
        resp, err := http.DefaultClient.Do(tt.r)
        defer resp.Body.Close()
        if err != nil {
            t.Fatal(err)
        }
        // Check for expected response.
    })
}</code>

Dalam contoh ini, kami mencipta penghala Gorilla mux dan kemudian menggunakan httptest.NewServer untuk mencipta pelayan langsung menggunakan penghala itu. Kami mentakrifkan beberapa permintaan ujian dan menghantarnya ke pelayan menggunakan http.DefaultClient. Kami kemudiannya boleh mengesahkan respons yang diterima daripada pelayan untuk memastikan ia sepadan dengan jangkaan kami.

Nota: Walaupun soalan itu secara khusus menyebut Gorilla mux, pendekatan yang diterangkan di sini boleh digunakan untuk mana-mana penghala yang memenuhi antara muka http.Handler.

Atas ialah kandungan terperinci Bagaimanakah anda menguji pelayan HTTP dengan permintaan langsung dalam Go menggunakan httptest.Server?. 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