Junior — Middle
Como é que a inversão de dependências facilita o processo de teste do código?
sobes.tech IA
Resposta da IA
O Princípio da Inversão de Dependências (Dependency Inversion Principle) permite separar a lógica de alto nível das implementações específicas de dependências, substituindo-as por abstrações (por exemplo, interfaces). Isso facilita os testes, pois é possível usar mocks ou stubs nos testes em vez de dependências reais, sem alterar o código que está sendo testado.
Exemplo em C#:
public interface ILogger
{
void Log(string message);
}
public class FileLogger : ILogger
{
public void Log(string message) { /* grava no arquivo */ }
}
public class UserService
{
private readonly ILogger _logger;
public UserService(ILogger logger)
{
_logger = logger;
}
public void CreateUser(string name)
{
// lógica de criação de usuário
_logger.Log($"Usuário {name} criado");
}
}
// Nos testes, pode-se passar um mock de ILogger:
public class MockLogger : ILogger
{
public List<string> Messages = new List<string>();
public void Log(string message) => Messages.Add(message);
}
Dessa forma, os testes não dependem de implementações reais e podem verificar a lógica de forma isolada.