Im Moment zu testen ich habe:Wie Methodenaufruf, um mit 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");
}
Aber die Reihenfolge, in der ich meine Objekte in dem Produktionscode ziehe keine Rolle spielt. Ich könnte einen zuerst machen, oder zwei, es spielt keine Rolle. Es sollte jedoch wichtig sein, wie die Zeichnungsreihenfolge wichtig ist.
Wie stellen Sie (mit Moq) sicher, dass Methoden in einer bestimmten Reihenfolge aufgerufen werden?
bearbeiten
habe ich diesen Test befreien. Die Zeichenmethode wurde aus meinen Komponententests entfernt. Ich muss es nur manuell testen, es funktioniert. Die Umkehrung der Bestellung wurde jedoch in eine separate Testklasse genommen, wo sie getestet wurde, so dass es nicht alles schlecht ist.
Danke für den Link über die Funktion, die sie untersuchen. Ich hoffe, dass es bald hinzugefügt wird, sehr praktisch.
Schauen Sie auch bei dieser Antwort: http://stackoverflow.com/a/39692781/205859 –