Sobes.tech
Middle

Cos'è un oggetto mock (finto) nei test?

sobes.tech AI

Risposta dell'AI

Un oggetto mock (finto) nei test è un oggetto speciale che imita il comportamento di un componente o modulo reale del sistema. Viene utilizzato per isolare il codice in fase di test dalle dipendenze esterne, per verificare la logica senza l'influenza di servizi o risorse reali.

Ad esempio, se hai una funzione che accede a un database, nei test invece di una connessione reale puoi usare un oggetto mock che restituisce dati predefiniti. Questo accelera i test e li rende più affidabili.

Esempio in Go con interfacce e mock:

// Interfaccia per lavorare con il database
type UserRepository interface {
    GetUser(id int) (*User, error)
}

// Implementazione mock
type MockUserRepo struct {}

func (m *MockUserRepo) GetUser(id int) (*User, error) {
    return &User{ID: id, Name: "Test User"}, nil
}

// Nel test
func TestGetUserName(t *testing.T) {
    repo := &MockUserRepo{}
    user, err := repo.GetUser(1)
    if err != nil {
        t.Fatal(err)
    }
    if user.Name != "Test User" {
        t.Errorf("atteso Test User, ottenuto %s", user.Name)
    }
}

In questo modo, gli oggetti mock aiutano a creare un ambiente controllato per i test e a individuare errori nella logica senza dipendere da sistemi esterni.