2010-09-20 61 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); 

这是一个想法,希望这有助于某人,祝你好运!