我正在尝试为向 Web 服务发出请求的包编写测试。我遇到的问题可能是由于我对 TLS 缺乏了解。目前我的测试看起来像这样:func TestSimple() { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) fmt.Fprintf(w, `{ "fake" : "json data here" }`) })) transport := &http.Transport{ Proxy: func(req *http.Request) (*url.URL, error) { return url.Parse(server.URL) }, } // Client is the type in my package that makes requests client := Client{ c: http.Client{Transport: transport}, } client.DoRequest() // ...}我的包有一个包变量(我希望它是一个常量..),用于查询 Web 服务的基地址。它是一个 https 网址。我上面创建的测试服务器是纯 HTTP,没有 TLS。默认情况下,我的测试失败并显示错误“tls:第一条记录看起来不像 TLS 握手”。为了让它起作用,我的测试在进行查询之前将包变量更改为普通的 http URL 而不是 https。有没有办法解决?我可以将包变量设置为常量 (https),然后设置一个http.Transport“降级”到未加密的 HTTP,或者httptest.NewTLSServer()改为使用?(当我尝试使用时,NewTLSServer()我收到“http: TLS 握手错误来自 127.0.0.1:45678: tls: 收到长度为 20037 的超大记录”)
1 回答
- 1 回答
- 0 关注
- 261 浏览
添加回答
举报
0/150
提交
取消