我正在使用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')。但是我想通过模式设置它。有什么建议吗?
答案 0 :(得分:0)
您不需要添加Where for AddAction方法,因为它具有void返回类型。如果您将MockBehaviour更改为Loose,那么它将自动模拟该方法,但如果您想要验证该方法,它将无效。