我gin用作我的 http 服务器并在 json 中发回一个空数组作为我的响应:c.JSON(http.StatusOK, []string{})我得到的结果 json 字符串是"[]\n". 换行符由 json Encoder 对象添加,请参见此处。使用goconvey,我可以像测试我的 jsonSo(response.Body.String(), ShouldEqual, "[]\n")但是有没有更好的方法来生成预期的 json 字符串,而不仅仅是向所有这些字符串添加换行符?
3 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
您应该首先将响应的主体解组为一个结构体并与结果对象进行比较。例子:
result := []string{}
if err := json.NewDecoder(response.Body).Decode(&result); err != nil {
log.Fatalln(err)
}
So(len(result), ShouldEqual, 0)
慕无忌1623718
TA贡献1744条经验 获得超4个赞
您可能会发现jsonassert很有用。它没有标准库之外的依赖项,并允许您验证 JSON 字符串在语义上是否与您期望的 JSON 字符串等效。
在你的情况下:
// white space is ignored, no need for \n
jsonassert.New(t).Assertf(response.Body().String(), "[]")
它可以处理任何形式的 JSON,并且具有非常友好的断言错误消息。
免责声明:我写了这个包。
- 3 回答
- 0 关注
- 162 浏览
添加回答
举报
0/150
提交
取消