typestar

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

  1. NewRequest arma la petición en memoria.
  2. NewRecorder captura el estado, los encabezados y el cuerpo.
  3. httptest.NewServer es para probar un cliente, en cambio.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Fakes y fixtures; paso 6 de 13 en Pruebas.

← Anterior Siguiente →