在 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中文网其他相关文章!