首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试go中的http调用

如何测试go中的http调用
EN

Stack Overflow用户
提问于 2018-07-01 02:48:27
回答 1查看 4.6K关注 0票数 4

我有以下代码:

代码语言:javascript
复制
// HTTPPost to post json messages to the specified url
func HTTPPost(message interface{}, url string) (*http.Response, error) {
    jsonValue, err := json.Marshal(message)
    if err != nil {
        logger.Error("Cannot Convert to JSON: ", err)
        return nil, err
    }
    logger.Info("Calling http post with url: ", url)
    resp, err := getClient().Post(url, "application/json", bytes.NewBuffer(jsonValue))
    if err != nil {
        logger.Error("Cannot post to the url: ", url, err)
        return nil, err
    }
    err = IsErrorResp(resp, url)
    return resp, err
}

我想为此编写测试,但我不知道如何使用httptest包。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-01 03:07:35

请看这里:

Server

基本上,您可以使用httptest.NewServer函数创建一个新的“模拟”http服务器。

您可以让模拟服务器从测试中返回您需要的任何响应,也可以让模拟服务器存储您的HTTPPost函数的请求,以便对其进行断言。

代码语言:javascript
复制
func TestYourHTTPPost(t *testing.T){

    ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, `response from the mock server goes here`)
        // you can also inspect the contents of r (the request) to assert over it
    }))
    defer ts.Close()

    mockServerURL = ts.URL

    message := "the message you want to test"

    resp, err := HTTPPost(message, mockServerURL)

    // assert over resp and err here
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51120033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档