首頁 >後端開發 >Golang >如何使用「httptest」在 Go 中有效測試 HTTP 呼叫?

如何使用「httptest」在 Go 中有效測試 HTTP 呼叫?

Barbara Streisand
Barbara Streisand原創
2024-12-15 08:15:15566瀏覽

How to Effectively Test HTTP Calls in Go using `httptest`?

如何使用httptest 在Go 中測試HTTP 呼叫

簡介

簡介

Go 中的HT測試可以使用httptest 套件來簡化。本文探討如何利用 httptest 進行回應和伺服器測試,包括伺服器測試的詳細範例。

測試類型
  • httptest 提供兩類測試:
  • 響應測試:驗證從請求。

伺服器測試: 模擬伺服器來測試與被測試應用程式的 HTTP 互動。

響應測試
resp := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/3D/header/?", nil)

http.DefaultServeMux.ServeHTTP(resp, req)

在響應測試中,Recorder 物件捕獲響應及其內容。以下程式碼片段示範了回應測試:

伺服器測試
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, `{"fake twitter json string"}`)
}))

對於伺服器測試,httptest 模擬伺服器並提供可以使用的網址:

在此範例中,建立了一個使用預先定義JSON 資料進行回應的伺服器。然後,可以在測試的應用程式中使用該伺服器的 URL。

範例:在retrieveTweets 中測試HTTP 呼叫
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()
    }
}

要測試retrieveTweets 功能:透過模擬伺服器,我們可以驗證函數到的結果。

以上是如何使用「httptest」在 Go 中有效測試 HTTP 呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn