当方法返回void时Moq.MockRepository.Of()用法

时间:2014-01-09 16:55:41

标签: c# unit-testing moq

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

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返回(编译错误是无法将'void'转换为'bool')。但是我想通过模式设置它。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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