Ce face testing.T.TempDir
t.TempDir() creează un director unic (fiecare apel dă altul) și înregistrează ștergerea lui cu t.Cleanup. Este locul potrivit pentru fișierele create de test: exporturi, baze de date SQLite, configurări.
Nu mai ai nevoie de os.MkdirTemp și defer os.RemoveAll. Dacă la final directorul nu poate fi șters (de exemplu un fișier e încă deschis pe Windows), testul eșuează, ceea ce te ajută să găsești fișierele uitate deschise.
Ce returnează
Calea absolută a directorului.
Exemple
Exemplul 1: Testarea unei funcții care scrie fișiere
// fișierul export.go
package magazin
import (
"fmt"
"os"
"path/filepath"
)
// Exporta scrie clienții în dir/clienti.csv și returnează calea.
func Exporta(dir string, clienti []string) (string, error) {
cale := filepath.Join(dir, "clienti.csv")
f, err := os.Create(cale)
if err != nil {
return "", err
}
defer f.Close()
for i, c := range clienti {
fmt.Fprintf(f, "%d,%s\n", i+1, c)
}
return cale, nil
}
// fișierul export_test.go
package magazin
import (
"os"
"testing"
)
func TestExporta(t *testing.T) {
dir := t.TempDir()
cale, err := Exporta(dir, []string{"Ana", "Mihai"})
if err != nil {
t.Fatal(err)
}
date, err := os.ReadFile(cale)
if err != nil {
t.Fatal(err)
}
if string(date) != "1,Ana\n2,Mihai\n" {
t.Errorf("conținut %q", date)
}
t.Log("fișier verificat în directorul temporar")
}
Rezultatul în terminal (timpii diferă la fiecare rulare)
$ go test -v
=== RUN TestExporta
export_test.go:21: fișier verificat în directorul temporar
--- PASS: TestExporta (0.00s)
PASS
ok magazin 0.229s
Greșeli frecvente
- Scrii fișierele de test în directorul proiectului (
os.WriteFile("test.csv", ...)). Rămân acolo după test și pot fi adăugate din greșeală în git.
Comenzi înrudite
testing.T.Cleanup: Înregistrează o funcție de curățenie care rulează după ce testul (și subtestele lui) s-au terminat.os.MkdirTemp: Creează un director temporar nou, cu nume unic, și returnează calea lui.testing.T: Tipul primit de fiecare funcție de test; prin el raportezi erori, scrii mesaje și controlezi testul.