2014-01-09 56 views
2

我使用Moq的MockRepository.Of <>方法来模拟各种方法来测试。当我通过Where子句将多个方法设置链接在一起时,它会在模拟方法返回时起作用。这显然是由于Where需要布尔表达式。你可以使用这种模式为没有返回变量的方法设置模拟吗?Moq.MockRepository.Of()使用方法有void时返回

var mockRepository = new MockRepository(MockBehavior.Strict); 
var debitCardBinManager = mockRepository.Of<IDebitCardBinManager>() 
       .Where(mgr => mgr.GetEffectiveDateBuffer() == 35) 
       .Where(mgr => mgr.AddAction(It.IsAny<DateTime>())) 
       .First(); 

从这个例子中可以设置GetEffectiveDateBuffer方法,因为它会返回一个整数。然而,AddAction不能,因为它有一个无效返回(编译错误是不能将'void'转换为'bool')。然而我想要通过模式来设置它。有什么建议么?

回答

0

您不需要为AddAction方法添加Where,因为它具有void返回类型。如果您将MockBehaviour更改为Loose,那么它会自动模拟该方法,但如果您正在验证该方法,则无法工作。

+0

谢谢。我确实需要严格的行为并验证该方法。所以看起来我必须使用MockRepository.Create方法并为每个方法调用Setup。 – rmunson

相关问题