Back to questions
Junior — Middle
65
Каким образом можно применить модульное тестирование для проверки интерфейса Consumer?
Companies where asked
УК Первая
Answer from AI
sobes.tech AI
В C# интерфейс Consumer обычно представлен делегатом Action<T>, который принимает параметр и ничего не возвращает. Для модульного тестирования кода, использующего Consumer (например, Action<T>), можно использовать заглушки (mocks) или проверять побочные эффекты вызова.
Пример с использованием Moq для проверки, что Consumer был вызван с ожидаемым параметром:
using Moq;
// Интерфейс с методом, принимающим Consumer
public interface IProcessor
{
void Process(Action<string> consumer);
}
// Тест
var mockConsumer = new Mock<Action<string>>();
IProcessor processor = ...; // объект, который вызывает consumer
processor.Process(mockConsumer.Object);
// Проверяем, что consumer был вызван с конкретным аргументом
mockConsumer.Verify(c => c(It.Is<string>(s => s == "expected value")), Times.Once);
Если не используете mocking-фреймворки, можно реализовать собственный Action<T>, который записывает вызовы в список или меняет состояние, чтобы проверить, что он был вызван корректно.
Таким образом, модульное тестирование Consumer сводится к проверке, что он вызывается с правильными параметрами и в нужное время.