Sobes.tech
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 сводится к проверке, что он вызывается с правильными параметрами и в нужное время.