使用 Httptest 在 Go 中测试 HTTP 调用
httptest 包提供了测试 HTTP 客户端和服务器的功能。要利用此包来测试您的 Go 代码,请考虑以下策略:
响应测试:
通过 httptest.NewRecorder() 创建一个新的记录器实例。利用此记录器评估响应状态代码和正文内容。
示例:
resp := httptest.NewRecorder() req, _ := http.NewRequest("GET", "/", nil) http.DefaultServeMux.ServeHTTP(resp, req) if resp.Code != http.StatusOK { t.Errorf("Expected status code 200, got %d", resp.Code) }
服务器测试:
使用 httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {})。此服务器模拟 HTTP 服务器,允许您测试 HTTP 客户端交互。
示例:
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() }
以上是Go 的 `httptest` 包如何简化 HTTP 客户端和服务器测试?的详细内容。更多信息请关注PHP中文网其他相关文章!