Sobes.tech
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.