Running tool: /usr/local/go/bin/go test -timeout 30s -run ^(ExampleBuild)$--- FAIL: ExampleBuild (0.00s)got:POST localhost/status?t=1 HTTP/1.1Content-Type: application/jsonwant:POST localhost/status?t=1 HTTP/1.1Content-Type: application/jsonFAILexit status 1我正在尝试使用 Example 方法编写测试。我创建了一个带有标头(Content-Type:application/json)、查询参数 t=1、方法类型 POST 和 URL localhost 的 http 请求。got: 和 want: 中的输出看起来是一样的,还检查了空白字符。无法弄清楚这两者之间有什么区别。无法弄清楚我在这里错过了什么。import ( "fmt" "net/http" "net/http/httputil")func ExampleBuild() { req, err := http.NewRequest(http.MethodPost, "localhost/status?t=1", nil) req.Header.Add("content-type", "application/json") if err != nil { panic(err) } str, err := httputil.DumpRequest(req, false) if err != nil { panic(err) } fmt.Printf("%s", string(str)) // Output: // POST localhost/status?t=1 HTTP/1.1 // Content-Type: application/json}
1 回答
胡说叔叔
TA贡献1804条经验 获得超8个赞
我认为正在发生的事情是 HTTP 标头的\r\n
换行符。所以这就是httputil.DumpRequest
回报。但是您可能正在一台不使用\r\n
换行符的机器上编辑这个文件,所以区别就在于此。
成功比较的蛮力方法是:
fmt.Println(strings.Replace(string(str), "\r", "", -1))
它从 HTTP 转储的字符串中删除了“\r”,如果您的编辑器仅使用“\n”来破坏预期输出,它将成功进行比较。
更优雅的解决方案将取决于您的测试环境的细节。
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报
0/150
提交
取消