Archivos golden en Go
Comparar contra un archivo grabado, y regenerarlo detrás de un flag.
var update = flag.Bool("update", false, "rewrite golden files")
func Render(rows []string) string {
return strings.Join(rows, "\n") + "\n"
}
func TestRenderGolden(t *testing.T) {
got := Render([]string{"python 364", "rust 181"})
golden := filepath.Join("testdata", "render.golden")
if *update {
if err := os.WriteFile(golden, []byte(got), 0o600); err != nil {
t.Fatalf("write golden: %v", err)
}
}
want, err := os.ReadFile(golden)
if err != nil {
t.Skipf("no golden file yet: %v", err)
}
if got != string(want) {
t.Errorf("output changed:\ngot:\n%s\nwant:\n%s", got, want)
}
}
Cómo funciona
- El flag hace que actualizar sea deliberado y no automático.
- Los archivos golden sirven para salida demasiado grande para ponerla en línea.
- Revisa el diff cuando actualices uno.
Palabras clave y builtins usados aquí
bytefuncifreturnstringvar
El intento, en números
- Líneas
- 24
- Caracteres a escribir
- 580
- Tokens
- 150
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 86 segundos.
Paso 3 de 3 en Fakes y fixtures; paso 7 de 13 en Pruebas.