Как проверить порядок вызова метода с Moq

На данный момент у меня есть:

    [Test]
    public void DrawDrawsAllScreensInTheReverseOrderOfTheStack() {
        // Arrange.
        var screenMockOne = new Mock<IScreen>();
        var screenMockTwo = new Mock<IScreen>();
        var screens = new List<IScreen>();
        screens.Add(screenMockOne.Object);
        screens.Add(screenMockTwo.Object);
        var stackOfScreensMock = new Mock<IScreenStack>();
        stackOfScreensMock.Setup(s => s.ToArray()).Returns(screens.ToArray());
        var screenManager = new ScreenManager(stackOfScreensMock.Object);
        // Act.
        screenManager.Draw(new Mock<GameTime>().Object);
        // Assert.
        screenMockOne.Verify(smo => smo.Draw(It.IsAny<GameTime>()), Times.Once(),
            "Draw was not called on screen mock one");
        screenMockTwo.Verify(smo => smo.Draw(It.IsAny<GameTime>()), Times.Once(), 
            "Draw was not called on screen mock two");
    }

Но порядок, в котором я рисую свои объекты в рабочем коде, не имеет значения. Я мог бы сделать один первый или два, это не имеет значения. Однако это должно иметь значение, так как важен порядок прорисовки.

Как вы (используя Moq) гарантируете, что методы вызываются в определенном порядке?

редактировать

Я избавился от этого теста. Метод рисования был удален из моих юнит-тестов. Я просто должен вручную проверить это работает. Обратный порядок заказа был взят в отдельный тестовый класс, где он был протестирован, так что не все так плохо.

Спасибо за ссылку о функции, которую они изучают. Я очень надеюсь, что это будет добавлено в ближайшее время, очень удобно.

Ответы на вопрос(6)

Ваш ответ на вопрос