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 использует мок правильно. Такой подход помогает изолировать тестируемый компонент от внешних зависимостей.