C# Moq.MockRepository.Of()方法返回void时的用法

C# Moq.MockRepository.Of()方法返回void时的用法,c#,unit-testing,moq,C#,Unit Testing,Moq,我正在使用Moq的MockRepository.Of方法来模拟各种要测试的方法。当我通过Where子句将多个方法设置链接在一起时,当模拟的方法返回时,它就会起作用。这显然是因为Where需要布尔表达式。可以使用此模式为没有返回变量的方法设置模拟吗 var mockRepository = new MockRepository(MockBehavior.Strict); var debitCardBinManager = mockRepository.Of<IDebitCardBinMana

我正在使用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();
var mockRepository=newmockrepository(MockBehavior.Strict);
var debitCardBinManager=mockRepository.Of()
.Where(mgr=>mgr.GetEffectiveDateBuffer()==35)
.Where(mgr=>mgr.AddAction(It.IsAny()))
.First();

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

您不需要添加Where for AddAction方法,因为它有一个void返回类型。如果您将mockbehavior更改为Loose,那么它将自动模拟该方法,但如果您希望验证该方法,它将无法工作。

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