Rumah > pembangunan bahagian belakang > Golang > Bagaimana Menguji secara Langsung Pengendali Pelayan HTTP dengan Penghala Penuh dalam Go?

Bagaimana Menguji secara Langsung Pengendali Pelayan HTTP dengan Penghala Penuh dalam Go?

Barbara Streisand
Lepaskan: 2024-11-03 04:59:30
asal
229 orang telah melayarinya

How to Live Test HTTP Server Handlers with a Full-Fledged Router in Go?

Pelayan HTTP Ujian Langsung dalam Go

Soalan:

Bagaimana saya boleh melakukan ujian langsung pengendali pelayan HTTP, memastikan bahawa mereka bertindak balas dengan betul kepada kaedah permintaan HTTP tertentu dalam konteks penghala lengkap?

Jawapan:

Untuk menjalankan ujian langsung bagi pelayan HTTP, gunakan jenis net/http/httptest.Server. Pendekatan ini melibatkan mencipta pelayan ujian langsung yang menggunakan penghala yang dipersoalkan. Selepas itu, anda boleh menghantar permintaan HTTP ke pelayan ujian ini dan mengesahkan respons terhadap keputusan yang dijangkakan.

Contoh Kod:

Kod berikut menunjukkan cara menggunakan httptest .Pelayan untuk ujian langsung:

<code class="go">import (
    "net/http"
    "net/http/httptest"
    "testing"
)

func TestIndex(t *testing.T) {
    // Initialize the router, e.g., a Gorilla mux router as in the question.
    router := mux.NewRouter()
    router.HandleFunc("/", views.Index).Methods("GET")

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

    // Define a function to construct new HTTP requests.
    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)}, // reader argument required for POST
    }

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

            // Perform validations on the response body, headers, etc.
        })
    }
}</code>
Salin selepas log masuk

Nota: Pendekatan ini terpakai kepada mana-mana penghala yang melaksanakan antara muka http.Handler, termasuk Gorilla mux, net/http.ServeMux dan http. DefaultServeMux.

Atas ialah kandungan terperinci Bagaimana Menguji secara Langsung Pengendali Pelayan HTTP dengan Penghala Penuh dalam Go?. 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