Как проверить порядок вызова метода с Moq
На данный момент у меня есть:
[Test]
public void DrawDrawsAllScreensInTheReverseOrderOfTheStack() {
// Arrange.
var screenMockOne = new Mock();
var screenMockTwo = new Mock();
var screens = new List();
screens.Add(screenMockOne.Object);
screens.Add(screenMockTwo.Object);
var stackOfScreensMock = new Mock();
stackOfScreensMock.Setup(s => s.ToArray()).Returns(screens.ToArray());
var screenManager = new ScreenManager(stackOfScreensMock.Object);
// Act.
screenManager.Draw(new Mock().Object);
// Assert.
screenMockOne.Verify(smo => smo.Draw(It.IsAny()), Times.Once(),
"Draw was not called on screen mock one");
screenMockTwo.Verify(smo => smo.Draw(It.IsAny()), Times.Once(),
"Draw was not called on screen mock two");
}
Но порядок, в котором я рисую свои объекты в рабочем коде, не имеет значения. Я мог бы сделать один первый или два, это нене имеет значения. Однако это должно иметь значение, так как важен порядок прорисовки.
Как вы (используя Moq) гарантируете, что методы вызываются в определенном порядке?
редактировать
Я избавился от этого теста. Метод рисования был удален из моих юнит-тестов. Я'Я просто должен проверить это вручную. Обратный порядок заказа был взят в отдельный тестовый класс, где он был протестирован, поэтомуне все так плохо.
Спасибо за ссылку о функции, которую они изучают. Я очень надеюсь, что это будет добавлено в ближайшее время, очень удобно.