Junior — Middle
¿Cómo contribuye la inversión de dependencias a facilitar el proceso de prueba del código?
sobes.tech AI
Respuesta de la IA
La inversión de dependencias (Principio de Inversión de Dependencias) permite separar la lógica de alto nivel de las implementaciones específicas de dependencias, reemplazándolas por abstracciones (por ejemplo, interfaces). Esto facilita las pruebas, ya que se pueden usar mocks o stubs en lugar de dependencias reales sin modificar el código que se está probando.
Ejemplo en C#:
public interface ILogger
{
void Log(string message);
}
public class FileLogger : ILogger
{
public void Log(string message) { /* escritura en archivo */ }
}
public class UserService
{
private readonly ILogger _logger;
public UserService(ILogger logger)
{
_logger = logger;
}
public void CreateUser(string name)
{
// lógica para crear usuario
_logger.Log($"Usuario {name} creado");
}
}
// En las pruebas, se puede pasar un mock de ILogger:
public class MockLogger : ILogger
{
public List<string> Messages = new List<string>();
public void Log(string message) => Messages.Add(message);
}
De esta forma, las pruebas no dependen de implementaciones reales y pueden verificar la lógica de forma aislada.