Sobes.tech
Junior — Middle

Kaip priklausomybių inversija prisideda prie kodo testavimo proceso palengvinimo?

sobes.tech AI

Atsakymas iš AI

Princips par atgriezenisko saiti (Dependency Inversion Principle) ļauj augstākās līnijas loģikai būt neatkarīgai no konkrētām atkarību realizācijām, tās aizstājot ar abstrakcijām (piemēram, interfeisiem). Tas atvieglo testēšanu, jo testos var izmantot moku vai stubu vietā reālas atkarības, nemainot testēto kodu.

Piemērs C#:

public interface ILogger
{
    void Log(string message);
}

public class FileLogger : ILogger
{
    public void Log(string message) { /* rakstīšana failā */ }
}

public class UserService
{
    private readonly ILogger _logger;
    public UserService(ILogger logger)
    {
        _logger = logger;
    }

    public void CreateUser(string name)
    {
        // lietotāja izveides loģika
        _logger.Log($"Lietotājs {name} izveidots");
    }
}

// Testos var nodot moku ILogger:
public class MockLogger : ILogger
{
    public List<string> Messages = new List<string>();
    public void Log(string message) => Messages.Add(message);
}

Tādējādi, testiem nav atkarības no reālām realizācijām un tie var izolēti pārbaudīt loģiku.