我有以下代码:
// 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包。
发布于 2018-07-01 03:07:35
请看这里:
基本上,您可以使用httptest.NewServer函数创建一个新的“模拟”http服务器。
您可以让模拟服务器从测试中返回您需要的任何响应,也可以让模拟服务器存储您的HTTPPost函数的请求,以便对其进行断言。
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
}https://stackoverflow.com/questions/51120033
复制相似问题