亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

已解決430363個問題,去搜搜看,總會有你想問的

在 Golang 中單元測試 http json 響應

在 Golang 中單元測試 http json 響應

Go
慕田峪7331174 2021-11-22 15:34:51
我gin用作我的 http 服務器并在 json 中發回一個空數組作為我的響應:c.JSON(http.StatusOK, []string{})我得到的結果 json 字符串是"[]\n". 換行符由 json Encoder 對象添加,請參見此處。使用goconvey,我可以像測試我的 jsonSo(response.Body.String(), ShouldEqual, "[]\n")但是有沒有更好的方法來生成預期的 json 字符串,而不僅僅是向所有這些字符串添加換行符?
查看完整描述

3 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

您應該首先將響應的主體解組為一個結構體并與結果對象進行比較。例子:


result := []string{}

if err := json.NewDecoder(response.Body).Decode(&result); err != nil {

    log.Fatalln(err)

}

So(len(result), ShouldEqual, 0)


查看完整回答
反對 回復 2021-11-22
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

將主體解組為結構體并使用 Gocheck 的 DeepEquals https://godoc.org/launchpad.net/gocheck


查看完整回答
反對 回復 2021-11-22
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

您可能會發現jsonassert很有用。它沒有標準庫之外的依賴項,并允許您驗證 JSON 字符串在語義上是否與您期望的 JSON 字符串等效。


在你的情況下:


// white space is ignored, no need for \n

jsonassert.New(t).Assertf(response.Body().String(), "[]")

它可以處理任何形式的 JSON,并且具有非常友好的斷言錯誤消息。


免責聲明:我寫了這個包。


查看完整回答
反對 回復 2021-11-22
  • 3 回答
  • 0 關注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號