在 Go 中使用即時請求測試 HTTP 伺服器
即時測試 HTTP 伺服器可讓您真實地驗證端點的功能-世界環境。當您的伺服器依賴外部服務或使用複雜的路由邏輯時,此方法特別有用。
使用net/http/httptest.Server 進行即時測試
net/ Go 標準庫中的http/httptest.Server 類型提供了一種建立即時HTTP 伺服器以進行測試的方法。使用方法如下:
<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>
在此範例中,我們建立一個 Gorilla mux 路由器,然後使用 httptest.NewServer 使用該路由器建立一個即時伺服器。我們定義一些測試請求並使用 http.DefaultClient 將它們傳送到伺服器。然後,我們可以驗證從伺服器收到的回應,以確保它們符合我們的期望。
注意:雖然問題特別提到了 Gorilla mux,但此處描述的方法適用於任何路由器滿足http.Handler介面。
以上是如何使用 httptest.Server 在 Go 中測試具有即時請求的 HTTP 伺服器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!