2010-09-20 64 views
1

如下:MOQ測試返回給定類型

var mockIActionService = new Mock<IActionService>(); 
var mockValidAgeRule = new Mock<ValidAgeRule>(mockIActionService.Object); 
mockValidAgeRule.Setup(t => t.Execute(app)); 

現在t.Execute返回「規則」的對象,我怎麼能確認的東西被封爲規則?

我試圖調用它這樣mockValidAgeRule.Verify(x => x.Execute(app).Passed)

我想測試對象返回結果真給出的輸入。

對不起,只是我有和一個小麻煩找到關於MOQ的信息是最新的有用

+0

你能展示更多代碼嗎?我很難理解它是如何組合在一起的。 – 2010-09-21 22:00:21

回答

0

以及經克里斯指出的所有問題,您沒有提供足夠的細節來得到正確的答案。儘管如此,恕我直言,很明顯,這個測試有代碼味道。它似乎沒有任何具體的實現。完全由模擬對象組成的測試不太可能測試任何有用的東西。

哪個班級代表您的SUT?這聽起來像它可能是你的Rules對象。如果您提供有關您的對象模型和預期行爲的更多詳細信息,則提供反饋會更容易。

0

我建議加上RulesMock對象是這樣的:

var rulesMock = new Mock<Rules>(); 
rulesMock.SetUp(x => x.MethodInRules).Return(some_object); 

那麼這個模擬添加到您的代碼:

var mockIActionService = new Mock<IActionService>(); 
var mockValidAgeRule = new Mock<ValidAgeRule>(mockIActionService.Object); 
mockValidAgeRule.Setup(t => t.Execute(app)).Returns(rulesMock.Object); 

所以,如果你的規則的getter調用MethodInRules(),您可以檢查此被稱爲:

rulesMock.Verify(x => x.MethodInRules, Times.Once); 

這是一個想法,希望這有助於某人,祝你好運!