慕运维8079593
我曾多次使用自定义Transport来测试客户。通常我会创建一些辅助类型和函数来减少样板代码。这样的事情可能是一个开始。package mainimport ( "bytes" "fmt" "io" "io/ioutil" "net/http" "os")type roundTripFunc func(*http.Request) (*http.Response, error)func (r roundTripFunc) RoundTrip(req *http.Request) (resp *http.Response, err error) { return r(req)}func main() { c := &http.Client{ Transport: roundTripFunc(func(req *http.Request) (resp *http.Response, err error) { return &http.Response{ StatusCode: 200, Body: ioutil.NopCloser(bytes.NewBufferString("test")), }, nil }), } r, _ := c.Get("/") fmt.Printf("%#v\n", r) io.Copy(os.Stdout, r.Body)}例如,如果您测试 JSON API 客户端,您可以制作一个往返帮助函数来处理解码、编码、标头等。在您的情况下,也许您可以将往返函数映射主机标头和 URL 路径到文件固定路径?