Ich versuche zu testen, ob mein http-Handler die richtigen Werte innerhalb des Körpers zurückgibt.Pufferzeichenfolge() nicht gleich Zeichenfolge
Dies ist meine Handler-Funktion
func Index(w http.ResponseWriter, r *http.Request){
message := `{"status": "OK"}`
w.WriteHeader(http.StatusOK)
w.Header().Set("Content-Type", "application/json;charset=UTF-8")
if err := json.NewEncoder(w).Encode(message); err != nil {
panic(err)
}
}
Das ist mein Test
istfunc TestIndex(t *testing.T){
req, err := http.NewRequest("GET", "/", nil)
if err != nil {
t.Fatal(err)
}
rr := httptest.NewRecorder()
handler := http.HandlerFunc(Index)
handler.ServeHTTP(rr, req)
expected := `"{"status": "OK"}"`
if rr.Body.String() != expected {
t.Errorf("handler returned unexpected body: got %v want %v",
rr.Body.String(), expected)
}
}
Das Ergebnis des Tests ist:
handlers_test.go:244: handler returned unexpected body: got "{\"status\": \"OK\"}"
want {"status": "OK"}
ich glaube, das Entkommen der "ist, weil der json Encode, aber auch wenn ich die zu
0 0 ändernexpected := `"{\"status\": \"OK\"}"`
es nicht funktioniert, als das Ergebnis des Tests ist
handlers_test.go:244: handler returned unexpected body: got "{\"status\": \"OK\"}"
want "{\"status\": \"OK\"}"
Im docs ich etwas gefunden, das json kodieren eine Zeilenendmarke anhängt, aber ich habe es nicht geschafft, den Test zu bekommen arbeiten auch mit diese Information: -/
Im Voraus, danke für Ihre Hilfe.
'erwartet: = \" "{" status ":" OK "} \" das hat ein extra "vor dem {. Könnte das ein Problem sein? –
@Shinratensei: Danke für den Hinweis.Bearbeitete das Schnipsel, aber löste das Problem nicht :( – Kmmel
Ja, ich weiß, es war nur etwas, das mir komisch aussah. Schau dir die Antworten an, sie wissen mehr über Golang –