为了账号安全,请及时绑定邮箱和手机立即绑定

写入响应正文等待客户端在 Go 中读取?

写入响应正文等待客户端在 Go 中读取?

Go
千万里不及你 2021-08-30 16:36:01
我在 Go 中使用 httptest 包来测试我的应用程序。最近我注意到我的一项测试未能完成,因为我的测试没有读取响应的正文func Test_AnyTest(t *testing.T) {    serve := newServer()    s := httptest.NewServer(serve)    defer s.Close()    testUrl := "/any/old/url"    c := &http.Client{}    r, _ := http.NewRequest("GET", s.URL+testUrl, new(bytes.Buffer))    r.Header.Add("If-None-Match", cacheVersion)    res, _ := c.Do(r)    if res.StatusCode == 304 {        t.Errorf("Should not have got 304")    }}s.Close()由于测试服务器上存在未完成的 http 连接,因此上述代码在延迟调用上被阻塞。我的服务器有一些写入正文的代码(使用 http.ResponseWriter 接口)。事实证明,在我在测试中读取正文之前,这段代码实际上是阻塞的。像这样的电话就成功了。ioutil.ReadAll(res.Body)我不介意在我的测试中进行这个调用,但我担心行为不端的客户端可能会导致这种行为并消耗服务器资源。有谁知道这里发生了什么?这是预期的行为,还是只是测试框架的问题?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信