Junior — Middle
Comment l'inversion des dépendances facilite-t-elle le processus de test du code?
sobes.tech IA
Réponse de l'IA
Le principe d'inversion des dépendances (Dependency Inversion Principle) permet de séparer la logique de haut niveau des implémentations concrètes des dépendances, en les remplaçant par des abstractions (par exemple, des interfaces). Cela facilite les tests, car on peut utiliser des mocks ou des stubs dans les tests à la place des dépendances réelles sans modifier le code testé.
Exemple en C# :
public interface ILogger
{
void Log(string message);
}
public class FileLogger : ILogger
{
public void Log(string message) { /* écriture dans un fichier */ }
}
public class UserService
{
private readonly ILogger _logger;
public UserService(ILogger logger)
{
_logger = logger;
}
public void CreateUser(string name)
{
// logique de création d'utilisateur
_logger.Log($"Utilisateur {name} créé");
}
}
// Dans les tests, on peut passer un mock de ILogger :
public class MockLogger : ILogger
{
public List<string> Messages = new List<string>();
public void Log(string message) => Messages.Add(message);
}
Ainsi, les tests ne dépendent pas des implémentations réelles et peuvent vérifier la logique de manière isolée.