json - 在 Golang 中对 http json 响应进行单元测试

标签 json go

我正在使用 gin 作为我的 http 服务器,并在 json 中发回一个空数组作为我的响应:

c.JSON(http.StatusOK, []string{})

我得到的结果json字符串是"[]\n"。换行符由 json 编码器对象添加,参见 here .

使用 goconvey,我可以像这样测试我的 json

So(response.Body.String(), ShouldEqual, "[]\n")

但是除了向所有字符串添加换行符之外,是否有更好的方法来生成预期的 json 字符串?

最佳答案

您应该首先将响应主体解码为一个结构,然后与生成的对象进行比较。示例:

result := []string{}
if err := json.NewDecoder(response.Body).Decode(&result); err != nil {
    log.Fatalln(err)
}
So(len(result), ShouldEqual, 0)

关于json - 在 Golang 中对 http json 响应进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33659298/

相关文章:

javascript - 如何使用 fs 在 node.js express 上正确地将数组写入文件?

java - json对象包含转换为 "\n"的换行符,同时将json对象转换为字符串或字节

java - 如何检查 Json 元素是否为 JsonPrimitive

json - Elm:解析 JSON 中的状态代码(带有潜在的错误消息)

go - 此错误处理的工作方式。 CSV文件读写盒

google-app-engine - AppEngine "appengine"包始终失败,出现 "syscall"或 "unsafe"导入失败

google-app-engine - Go Appengine 端点测试的问题

c# - 如何使用 System.Text.Json 处理同一属性的单个项目和数组?

使用 golang 的 drawmask 和 draw.Over 的图像故障

templates - 在所有错误检查完成之前,如何防止在 Go 中生成输出?