Мне нужно протестировать следующий метод:
CreateOutput(IWriter writer)
{
writer.Write(type);
writer.Write(id);
writer.Write(sender);
// many more Write()s...
}
Я создал Moq'd IWriter
и хочу убедиться, что Методы Write()
вызываются в правильном порядке.
У меня есть следующий тестовый код:
var mockWriter = new Mock<IWriter>(MockBehavior.Strict);
var sequence = new MockSequence();
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedType));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedId));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedSender));
Однако второй вызов Write()
в CreateOutput()
(для записи значения id
) выдает MockException
с сообщением «Сбой вызова IWriter.Write() из-за имитации поведения Strict. Все вызовы на макете должны иметь соответствующую настройку. ».
Мне также трудно найти какую-либо окончательную, актуальную документацию/примеры последовательностей Moq.
Я что-то делаю не так, или я не могу настроить последовательность тем же методом? Если нет, есть ли альтернатива, которую я могу использовать (предпочтительно с использованием Moq/NUnit)?