【发布时间】:2018-03-22 17:43:04
【问题描述】:
我为我的记录器创建了一个模拟项目,以便我可以验证对其进行了哪些调用;像这样:
mock_log.Setup(l => l.InfoFormat(It.IsAny<string>(), It.IsAny<object[]>()));
mock_log.Verify(m => m.InfoFormat("1 file(s) found that match criteria."), Times.Exactly(1));
我已经调试了代码,并且我知道这些日志在代码中被击中,因此应该记录这些日志。这是记录该消息的代码
_log.InfoFormat("{0} file(s) found that match criteria.", files.Count);
只有 1 个文件被传下来。
那么为什么当我验证一个呼叫时它会失败? 任何建议。
【问题讨论】:
-
如果删除设置调用会发生什么?我认为您将 Moq 设置为期望 2 个调用 - 设置和验证。我更喜欢使用 Setup 进行准确调用,并使用 moq.VerifyAll() 来检查 Setups 是否已被使用
-
无需调用设置,因为您正在验证您感兴趣的调用。有些人将设置与 VerifyAll 一起使用,但根据我的经验,我同意 RussellAllen 的这种方法makes it hard to tell what is being asserted
标签: c# unit-testing mocking moq verify