Cómo probar el método de pedido con Moq

En el momento tengo:

    [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");
    }

Pero no importa el orden en el que dibuje mis objetos en el código de producción. Podría hacer uno primero, o dos, no importa. Sin embargo, debe importar ya que el orden de sorteo es importante.

¿Cómo (usando Moq) se asegura que los métodos sean llamados en un cierto orden?

Editar

Me deshice de esa prueba. El método de sorteo ha sido eliminado de mis pruebas unitarias. Sólo tendré que probarlo manualmente. Sin embargo, la reversión del pedido se tomó en una clase de prueba separada donde se probó, por lo que no es tan malo.

Gracias por el enlace sobre la función que están estudiando. Espero que se agregue pronto, muy útil.

Respuestas a la pregunta(6)

Su respuesta a la pregunta