Мне нужно протестировать следующий метод:
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
) вызывает a MockException
с сообщением "IWriter.Write() invocation failed with mock behavior Strict. Все вызовы на mock должен иметь соответствующую настройку.".
Мне также трудно найти какую-либо окончательную, последнюю документацию/примеры последовательности Moq.
Я делаю что-то неправильно, или я не могу настроить последовательность, используя тот же метод? Если нет, есть ли альтернатива, которую я могу использовать (предпочтительно используя Moq/NUnit)?