相关疑难解决方法(0)

如何强制读取响应体出错

我已经在 go 中编写了 http 客户端包装器,我需要对其进行彻底的测试。我正在使用包装器中的 ioutil.ReadAll 读取响应正文。我在弄清楚如何在 httptest 的帮助下强制从响应主体读取失败时遇到了一些麻烦。

package req

func GetContent(url string) ([]byte, error) {
    response, err := httpClient.Get(url)
    // some header validation goes here
    body, err := ioutil.ReadAll(response.Body)
    defer response.Body.Close()

    if err != nil {
        errStr := fmt.Sprintf("Unable to read from body %s", err)
        return nil, errors.New(errStr)
    }

    return body, nil
}
Run Code Online (Sandbox Code Playgroud)

我假设我可以像这样设置一个假服务器:

package req_test

func Test_GetContent_RequestBodyReadError(t *testing.T) {

    handler := func(w http.ResponseWriter, r *http.Request) {
        w.WriteHeader(http.StatusOK)
    }

    ts := httptest.NewServer(http.HandlerFunc(handler))
    defer ts.Close()

    _, err := GetContent(ts.URL) …
Run Code Online (Sandbox Code Playgroud)

testing unit-testing http go

4
推荐指数
1
解决办法
2688
查看次数

标签 统计

go ×1

http ×1

testing ×1

unit-testing ×1