Probar un handler HTTP en Go
httptest da un grabador y una petición, así que no se abre ningún puerto.
func healthz(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
fmt.Fprint(w, `{"status":"ok"}`)
}
func TestHealthz(t *testing.T) {
request := httptest.NewRequest(http.MethodGet, "/healthz", nil)
recorder := httptest.NewRecorder()
healthz(recorder, request)
if recorder.Code != http.StatusOK {
t.Fatalf("status = %d, want 200", recorder.Code)
}
if got := recorder.Header().Get("Content-Type"); got != "application/json" {
t.Errorf("content type = %q", got)
}
if !strings.Contains(recorder.Body.String(), `"ok"`) {
t.Errorf("body = %q", recorder.Body.String())
}
}
Cómo funciona
NewRequestarma la petición en memoria.NewRecordercaptura el estado, los encabezados y el cuerpo.httptest.NewServeres para probar un cliente, en cambio.
Palabras clave y builtins usados aquí
funcif
El intento, en números
- Líneas
- 22
- Caracteres a escribir
- 637
- Tokens
- 161
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 92 segundos.
Paso 2 de 3 en Fakes y fixtures; paso 6 de 13 en Pruebas.