Junior — Middle
Mock nei test e perché sono necessari
sobes.tech AI
Risposta dell'AI
I mock (finti) nei test sono oggetti che simulano il comportamento delle dipendenze reali del sistema. Sono necessari per isolare il codice testato da componenti esterni, affinché i test siano veloci, affidabili e riproducibili.
Ad esempio, se una funzione dipende da un database, invece di una connessione reale si può usare un mock che restituisce dati predefiniti. Questo permette di verificare la logica della funzione senza rischiare fallimenti dovuti a problemi con il database.
In Go, i mock vengono spesso creati tramite interfacce e librerie speciali, come gomock o testify/mock.
Esempio di un mock semplice in Go:
// Interfaccia
type DB interface {
GetUser(id int) (User, error)
}
// Mock
type MockDB struct {}
func (m *MockDB) GetUser(id int) (User, error) {
return User{ID: id, Name: "Test User"}, nil
}
// Nel test
func TestGetUserName(t *testing.T) {
db := &MockDB{}
user, err := db.GetUser(1)
if err != nil {
t.Fatal(err)
}
if user.Name != "Test User" {
t.Errorf("nome utente inatteso")
}
}