Au moment où j'ai:Comment tester la méthode order d'appel avec 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");
}
Mais l'ordre dans lequel je dessine mes objets dans le code de production n'a pas d'importance. Je pourrais en faire une en premier, ou deux, peu importe. Cependant, cela devrait être important car l'ordre de tirage est important.
Comment utilisez-vous Moq pour vous assurer que les méthodes sont appelées dans un certain ordre?
Modifier
je me suis débarrassé de ce test. La méthode draw a été retirée de mes tests unitaires. Je vais juste devoir tester manuellement cela fonctionne. L'inversion de la commande a été prise dans une classe de test séparée où elle a été testée, donc tout n'est pas mauvais.
Merci pour le lien sur la caractéristique recherchée. J'espère que ça va bientôt être ajouté, très pratique.
un coup d'oeil à cette réponse ainsi: http://stackoverflow.com/a/39692781/205859 –