Moq基本问题

时间:2010-05-24 23:56:34

标签: mocking moq

我为我的班级做了以下测试:

var mock = new Mock<IRandomNumberGenerator>();
mock.Setup(framework => framework.Generate(0, 50))
    .Returns(7.0);

var rnac = new RandomNumberAverageCounter(mock.Object, 1, 100);
rnac.Run();
double result = rnac.GetAverage();
Assert.AreEqual(result, 7.0, 0.1);

这里的问题是我改变了我对Generate(int min, int max)将使用的值范围的看法。因此,在Mock.Setup()中我将范围定义为0 to 50,而后来我实际上调用的Generate()方法的范围为1 to 100

我跑了测试但失败了。我知道这就是它应该发生的事情,但是我想知道在尝试使用错误的参数运行方法时是否有办法启动异常或抛出消息。

另外,如果我想用不同的值运行这个Generate()方法10次(比方说,从1到10),我是否需要进行10次模拟设置,或者是否有特殊的方法呢?我能想到的最好的就是这个(这不错,我只想问是否还有其他更好的方法):

for (int i = 1; i < 10; ++i) {
    mock.Setup(framework => framework.Generate(1, 100))
        .Returns((double)i);
}

1 个答案:

答案 0 :(得分:0)

你看过Moq QuickStart了吗?我怀疑你想要It.IsAny机制和/或其中一个返回重载,你提供一个lambda方法,它被调用回来生成和/或匹配/验证params到mocked方法。