如何在Go中测试http.NewRequest?

时间:2018-01-06 06:22:05

标签: testing go

我大多熟悉Go中的测试,但很难找到测试以下功能的方法:

.drive

我想检查请求是否有正确的帖子数据和正确的标题。试图调查httptests,但我不确定如何使用它。

1 个答案:

答案 0 :(得分:5)

httptest.Server有一个URL字段,您可以使用该值发送请求,因此这将是您的函数的url参数。

然后,为了测试http.Request是否与正确的标题和正文一起发送,您可以在调用httptest.NewServer时使用自定义处理程序创建测试服务器。然后,服务器将在发送到上述url的每个请求上调用此处理程序,因此您的测试逻辑应该进入此处理程序。

ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    // Test that r is what you expect it to be
}))
defer ts.Close()

err := postJson(ts.URL+"/foo/bar", data)

游乐场:https://play.golang.org/p/SldU4JSs911