2 回答

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
問題是您在標(biāo)題之前發(fā)送了身體。這在任何語言中都行不通——這是 HTTP 的事實(shí),而不是 Go 的事實(shí)。
它沒有被您的測試捕獲的原因是您的測試實(shí)際上是在濫用ResponseRecorder;您在地圖中設(shè)置字段,然后直接從該地圖讀取字段。測試應(yīng)該只檢查ResponseRecorder.Result,它旨在為您提供客戶端實(shí)際收到的結(jié)果,包括在發(fā)送正文時(shí)鎖定標(biāo)頭:
if ctype := rr.Response().Header.Get("Content-Type"); ctype != "application/json" {
t.Errorf("content type header does not match: got %v want %v",
ctype, "application/json")
}

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
只需將您的功能更改為:
func HealthCheckHandler(w http.ResponseWriter, r *http.Request) {
// this will cause a duplicate status header to be written
// w.WriteHeader(http.StatusOK)
w.Header().Set("Content-Type", "application/json")
io.WriteString(w, `{"alive": true}`)
}
- 2 回答
- 0 關(guān)注
- 157 瀏覽
添加回答
舉報(bào)