Junior — Middle
Qual è il ruolo principale e l'applicazione degli oggetti Mock nel processo di test?
sobes.tech AI
Risposta dell'AI
Gli oggetti mock vengono utilizzati nei test per simulare il comportamento dei componenti reali del sistema con cui il modulo testato interagisce. Il ruolo principale del mock è isolare il codice in test dalle dipendenze esterne (ad esempio, database, servizi di rete) affinché i test siano rapidi, affidabili e riproducibili.
L'uso di oggetti mock consente:
- di verificare le interazioni con le dipendenze (ad esempio, chiamate ai metodi, parametri passati).
- di simulare diversi scenari di funzionamento delle dipendenze (successo, errori, ritardi).
- di semplificare la configurazione dell'ambiente di test.
Esempio in Go usando interfacce e mock per testare una funzione che chiama un servizio esterno:
package service
type ExternalAPI interface {
GetData(id string) (string, error)
}
func ProcessData(api ExternalAPI, id string) (string, error) {
data, err := api.GetData(id)
if err != nil {
return "", err
}
return "Processed: " + data, nil
}
// Nel test creiamo un mock:
type MockAPI struct {}
func (m *MockAPI) GetData(id string) (string, error) {
if id == "123" {
return "mocked data", nil
}
return "", fmt.Errorf("not found")
}
// Test
func TestProcessData(t *testing.T) {
mock := &MockAPI{}
result, err := ProcessData(mock, "123")
if err != nil || result != "Processed: mocked data" {
t.Errorf("risultato inatteso: %v, errore: %v", result, err)
}
}