Sobes.tech
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")
     }
 }