Sobes.tech
Junior — Middle
75

Каким образом можно создать имитацию (замок) для тестирования компонентов или функций?

Companies where asked
Элисофт

Answer from AI

sobes.tech AI

В C# для создания имитаций (замков, mocks) обычно используют специальные библиотеки, например, Moq или NSubstitute. Это позволяет подменять реальные зависимости на тестовые объекты, контролировать их поведение и проверять вызовы.

Пример с Moq:

using Moq;
using Xunit;

public interface IService {
    int GetValue();
}

public class Consumer {
    private readonly IService _service;
    public Consumer(IService service) {
        _service = service;
    }
    public int Compute() {
        return _service.GetValue() * 2;
    }
}

public class Tests {
    [Fact]
    public void TestCompute() {
        var mock = new Mock<IService>();
        mock.Setup(s => s.GetValue()).Returns(10);

        var consumer = new Consumer(mock.Object);
        int result = consumer.Compute();

        Assert.Equal(20, result);
        mock.Verify(s => s.GetValue(), Times.Once);
    }
}

Здесь мы создаем мок для интерфейса IService, задаем поведение метода GetValue, затем проверяем, что метод Compute использует мок правильно. Такой подход помогает изолировать тестируемый компонент от внешних зависимостей.