Helpers y limpieza en Go
t.Helper corrige la línea reportada; t.Cleanup reemplaza el teardown.
func mustEqual(t *testing.T, got, want string) {
t.Helper() // señala la línea de quien llama, no esta
if got != want {
t.Fatalf("got %q, want %q", got, want)
}
}
func TestWithFixture(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "runs.txt")
if err := os.WriteFile(path, []byte("104\n"), 0o600); err != nil {
t.Fatalf("write: %v", err)
}
t.Cleanup(func() { t.Log("finished with", path) })
data, err := os.ReadFile(path)
if err != nil {
t.Fatalf("read: %v", err)
}
mustEqual(t, strings.TrimSpace(string(data)), "104")
}
Cómo funciona
- Sin
t.Helper, las fallas apuntan al helper, no a la prueba. t.Cleanupcorre en orden inverso al terminar la prueba.t.TempDirse elimina por ti cuando la prueba acaba.
Palabras clave y builtins usados aquí
bytefuncifstring
El intento, en números
- Líneas
- 22
- Caracteres a escribir
- 537
- Tokens
- 157
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 94 segundos.
Paso 3 de 4 en Escribir pruebas; paso 3 de 13 en Pruebas.