Rumah >pembangunan bahagian belakang >Golang >Cara membuat pelayan HTTP yang belum dimulakan menggunakan fungsi net/http/httptest.NewUnstartedServer dalam golang

Cara membuat pelayan HTTP yang belum dimulakan menggunakan fungsi net/http/httptest.NewUnstartedServer dalam golang

WBOY
WBOYasal
2023-11-18 17:07:59701semak imbas

Cara membuat pelayan HTTP yang belum dimulakan menggunakan fungsi net/http/httptest.NewUnstartedServer dalam golang

Cara membuat pelayan HTTP yang belum dimulakan menggunakan fungsi net/http/httptest.NewUnstartedServer dalam golang

Ikhtisar: #🎜🎜 Di Golang, kami boleh menggunakan pakej net/http untuk membina dan mengendalikan pelayan HTTP. Semasa melakukan ujian unit, kadangkala anda perlu mencipta pelayan HTTP yang belum dimulakan untuk mensimulasikan tingkah laku pelayan dalam ujian. Dalam kes ini, anda boleh menggunakan fungsi NewUnstartedServer dalam pakej net/http/httptest untuk mencipta pelayan HTTP yang belum dimulakan.

Fungsi NewUnstartedServer ialah fungsi dalam pakej net/http/httptest yang mencipta pelayan HTTP yang belum dimulakan berdasarkan parameter yang dihantar. Apabila kami memanggil fungsi ini, contoh *httptest.Server akan dikembalikan, yang mewakili pelayan yang belum dimulakan. Kami boleh menggunakan contoh ini untuk pelbagai gelagat pelayan simulasi dalam ujian kami.

Berikut ialah contoh kod khusus untuk menunjukkan cara menggunakan fungsi NewUnstartedServer untuk mencipta pelayan HTTP yang belum dimulakan.

Contoh kod:

package main

import (
    "fmt"
    "net/http"
    "net/http/httptest"
    "testing"
)

func main() {
    // 创建一个未启动的HTTP服务器
    server := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, "Hello, World!")
    }))

    // 启动HTTP服务器
    server.Start()

    // 发送HTTP请求到服务器
    resp, err := http.Get(server.URL)
    if err != nil {
        fmt.Println("发送请求失败", err)
        return
    }
    defer resp.Body.Close()

    // 输出响应内容
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("读取响应失败", err)
        return
    }
    fmt.Println("响应:", string(body))

    // 停止HTTP服务器
    server.Close()
}

Dalam contoh di atas, kami mula-mula mencipta pelayan HTTP yang belum dimulakan menggunakan fungsi httptest.NewUnstartedServer. Fungsi pengendali pelayan ialah fungsi tanpa nama yang hanya mengembalikan "Hello, World!"

Kemudian, kami memanggil kaedah pelayan.Start() untuk memulakan pelayan HTTP. Selepas pelayan dimulakan, kami menggunakan fungsi http.Get untuk memulakan permintaan GET ke URL pelayan dan mendapatkan respons yang dikembalikan oleh pelayan.

Akhir sekali, kami mengeluarkan kandungan respons dan memanggil pelayan.Close() untuk menutup pelayan HTTP.

Perlu diingatkan bahawa pelayan HTTP yang belum dimulakan hanya mensimulasikan respons kepada klien yang menghantar permintaan, dan sebenarnya tidak mendengar dan memproses permintaan dari luar. Oleh itu, anda tidak perlu risau tentang konflik atau kesan dengan pelayan sebenar apabila menggunakan pelayan HTTP yang belum dimulakan dalam ujian anda.

Ringkasan:

Di Golang, menggunakan fungsi net/http/httptest.NewUnstartedServer boleh mencipta pelayan HTTP yang belum dimulakan dengan mudah untuk mensimulasikan tingkah laku pelayan dalam ujian. Pelayan yang dicipta oleh fungsi ini boleh dimulakan melalui kaedah pelayan.Start(), dan menggunakan fungsi seperti http.Get untuk mensimulasikan permintaan menghantar pelanggan. Selepas digunakan, anda boleh memanggil kaedah pelayan.Close() untuk menutup pelayan. Kaedah ini membolehkan kami menguji unit pelayan HTTP dengan mudah.

Atas ialah kandungan terperinci Cara membuat pelayan HTTP yang belum dimulakan menggunakan fungsi net/http/httptest.NewUnstartedServer dalam golang. 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