【问题标题】:Moq.MockRepository.Of() usage when method has void return方法返回 void 时的 Moq.MockRepository.Of() 用法
【发布时间】:2014-01-09 16:55:40
【问题描述】:

我正在使用 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')。但是,我想通过模式进行设置。有什么建议吗?

【问题讨论】:

    标签: c# unit-testing moq


    【解决方案1】:

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

    【讨论】:

    • 谢谢。我确实想要严格的行为并验证该方法。所以看起来我必须使用 MockRepository.Create 方法并为每个方法调用 Setup。
    猜你喜欢
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 2015-10-27
    相关资源
    最近更新 更多