Bagaimana untuk Menguji Pelayan HTTP dengan Permintaan Langsung dalam Go?

Barbara Streisand
Lepaskan: 2024-11-03 03:07:02
asal
1051 orang telah melayarinya

How to Test HTTP Servers with Live Requests in Go?

Menguji Pelayan HTTP dengan Permintaan Langsung dalam Go

Pengendali ujian unit secara berasingan adalah penting, tetapi boleh mengabaikan kesan penghalaan dan perisian tengah lain . Untuk ujian menyeluruh, pertimbangkan untuk menggunakan pendekatan "pelayan langsung".

Ujian Pelayan Langsung dengan httptest.Server

Jenis net/http/httptest.Server memudahkan siaran langsung ujian pelayan. Ia mencipta pelayan menggunakan pengendali yang disediakan (dalam kes ini, penghala Gorilla mux). Berikut ialah contoh:

<code class="go">func TestIndex(t *testing.T) {
  // Create server using the router initialized elsewhere.
  ts := httptest.NewServer(router)
  defer ts.Close()

  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
  }{
    // Test GET and POST requests.
    {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)
        }
        // check for expected response here.
    })
  }
}</code>
Salin selepas log masuk

Perhatikan bahawa httptest.Server boleh digunakan untuk menguji mana-mana pengendali yang memenuhi antara muka http.Handler, bukan hanya Gorilla mux.

Pertimbangan

Walaupun ujian pelayan langsung menyediakan ujian yang lebih realistik, ia juga boleh menjadi lebih perlahan dan lebih intensif sumber berbanding ujian unit. Pertimbangkan gabungan ujian unit dan penyepaduan untuk strategi ujian yang komprehensif.

Atas ialah kandungan terperinci Bagaimana untuk Menguji Pelayan HTTP dengan Permintaan Langsung 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