Sobes.tech
Junior — Middle

Moches dans les tests et pourquoi ils sont nécessaires

sobes.tech IA

Réponse de l'IA

Les mocks (simulations) en test sont des objets factices qui imitent le comportement des dépendances réelles du système. Ils sont nécessaires pour isoler le code testé des composants externes, afin que les tests soient rapides, fiables et reproductibles.

Par exemple, si une fonction dépend d'une base de données, au lieu d'une connexion réelle, on peut utiliser un mock qui renvoie des données prédéfinies. Cela permet de vérifier la logique de la fonction sans risque de défaillance due à des problèmes avec la base de données.

En Go, les mocks sont souvent créés à l'aide d'interfaces et de bibliothèques spéciales, comme gomock ou testify/mock.

Exemple d'un mock simple en Go:

// Interface
 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
 }

// Dans le 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("nom d'utilisateur inattendu")
     }
 }