2010-05-24 68 views
1

我爲我的課了以下測試:起訂量基本問題

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

我跑了測試,失敗了。我知道這就是它應該發生的事情,但我仍然想知道在嘗試運行帶有錯誤參數的方法時是否沒有辦法啓動異常或拋出消息。另外,如果我想用不同的值(例如,從1到10)運行這個Generate()方法10次,我將不得不做10個模擬設置或其他東西,或者是否有一個特殊的方法?我能想到的最好的是這樣的(這是不壞,我只是詢問是否有其他更好的方法):

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

回答

0

你看着的Moq QuickStart?我懷疑你需要It.IsAny機制和/或返回重載之一,因爲你提供了一個lambda方法,該方法被回調以生成和/或匹配/驗證params到模擬方法中。