мне нужно проверить следующий метод:Использование Moq для проверки вызовов сделаны в правильном порядке
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() вызов с неудачной макет поведения Строго. Все вызовы на макет должны иметь соответствующую настройку. ".
Мне также сложно найти окончательную, современную документацию/примеры последовательностей Moq.
Я делаю что-то неправильно, или я не могу настроить последовательность, используя тот же метод? Если нет, есть ли альтернатива, которую я могу использовать (желательно с использованием Moq/NUnit)?
возможный дубликат [Как проверить метод заказа вызова с Moq] (http://stackoverflow.com/questions/1765738/how- to-test-method-call-order-with-moq) – sloth
[последняя версия Moq, v4.2] (https://github.com/Moq/moq) имеет «улучшенное тестирование последовательности подделок» в соответствии с ее [примечания к выпуску] (https://github.com/Moq/moq4/blob/master/ReleaseNotes.md). –
Я использую v.4.2.x и могу подтвердить, что функциональность последовательности работает для меня. –