我有以下代码:
// 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包。
在这里看看:
https://golang.org/pkg/net/http/httptest/#example_Server
基本上,您可以使用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
}
问题内容: 我正在Go中运行一个带有打印内容的语句的测试(即用于测试的调试),但是它不打印任何内容。 当我对此文件运行go test时,输出为: 据我所知,真正使其打印的唯一方法是通过t.Error()进行打印,如下所示: 哪个输出: 我已经用Google搜索并浏览了手册,但没有找到任何东西。 问题答案: 结构和都具有和方法,这听起来似乎是您想要的。和分别类似于和。 在此处查看更多详细信息:htt
我在Go中运行一个测试,用一个语句打印一些东西(例如,用于测试的调试),但是它没有打印任何东西。 当我对此文件运行go测试时,输出如下: 据我所知,真正让它打印出来的唯一方法是通过t.Error()打印出来,如下所示: 其输出如下: 我用谷歌搜索并查看了手册,但没有找到任何东西。
我想查看在Chrome中发送的HTTP POST数据。 数据现在在内存中,我有能力重新提交表单。 我知道如果我重新提交,服务器将抛出一个错误。我是否可以查看Chrome内存中的数据?
问题内容: 是否有合法的方式写下我打算以后编写完整测试功能的测试用例?就像即将进行的mochajs测试一样? 问题答案: 软件包文档使用以下示例描述了这样的示例: 如果不适用于调用 T和 B的Skip方法,则可以跳过测试和基准测试: 如果您启动带有标志的消息,则将打印您提供的消息(在此示例中,您还需要提供标志以查看跳过消息)。
问题内容: 我从其他地方的日志中附带了http响应标头。在我的日志文件中,我有类似以下内容: 给定上面的字符串,我如何将其解析为net / http中所述的Header对象。一种方法是自己分割字符串并映射键,值…但是我希望避免手动操作,而使用标准的(或维护良好的第3方)库来解析它…任何指针? 问题答案: 内置的解析器位于textproto中。您可以直接使用它,也可以添加伪造的HTTP请求标头并在h
问题内容: 在某些情况下,我具有记录错误的功能: 现在,在测试文件中,我想检查此函数的输出错误: 如何访问日志?我试图放置一个缓冲区,但是没有用。在不更改我的readByte函数代码的情况下捕获此日志的正确方法是什么? 问题答案: 例如, : 输出: