Sobes.tech
Junior — Middle

Ինչպե՞ս է կախվածությունների հակադարձումը նպաստում կոդի թեստավորման գործընթացին:

sobes.tech AI

Պատասխան AI-ից

Արձանագրությունների հակադրության սկզբունքը (Dependency Inversion Principle) թույլ է տալիս բարձր մակարդակի տրամաբանությունը անկախ լինել կոնկրետ կախվածությունների իրականացմանից, փոխարինելով դրանք աբստրակցիաներով (օրինակ, ինտերֆեյսներով): Սա հեշտացնում է թեստավորումը, քանի որ թեստերում կարելի է օգտագործել մոկեր կամ ստուբեր իրական կախվածությունների փոխարեն՝ առանց թեստավորվող կոդը փոխելու:

C# օրինակով:

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

public class FileLogger : ILogger
{
    public void Log(string message) { /* գրանցում ֆայլում */ }
}

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

    public void CreateUser(string name)
    {
        // օգտվողի ստեղծման տրամաբանություն
        _logger.Log($"Օգտագործող {name} ստեղծվեց");
    }
}

// Թեստերում կարելի է փոխանցել մոկ ILogger:
public class MockLogger : ILogger
{
    public List<string> Messages = new List<string>();
    public void Log(string message) => Messages.Add(message);
}

Այսպիսով, թեստերը չեն կախված իրական իրականացումներից և կարող են մենթալիզացված ստուգել տրամաբանությունը։