【发布时间】:2010-12-18 10:54:32
【问题描述】:
目前我有:
[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)确保按特定顺序调用方法?
编辑
我摆脱了那个测试。 draw 方法已从我的单元测试中删除。我只需要手动测试它是否有效。虽然顺序的颠倒被带入了一个单独的测试类,在那里它被测试了,所以它并不全是坏的。
感谢您提供有关他们正在研究的功能的链接。我当然希望它尽快添加,非常方便。
【问题讨论】:
标签: c# unit-testing moq