最小起订量记录器和验证调用失败
Moq logger & verifying calls fails
我已经为我的记录器创建了一个模拟项目,这样我就可以验证对它进行了哪些调用;像这样:
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 个文件被传递下来。
那么为什么当我验证一个调用时它失败了?
任何建议。
在模拟设置中,您告诉记录器第二个参数是一个数组,但随后您在 运行 时传入了一个计数。我怀疑这将是问题所在。尝试更改为:
It.IsAny<object>()
另一个想法,您在 .Verify 中应用的测试看起来有点奇怪。我不确定 Times.Exactly(1) 是什么意思,如果模拟试图 运行 验证生成的格式字符串,您可能只想传入 1?
发现是字符串封装没打通。将验证更改为
mock_log.Verify(m => m.InfoFormat("{0} file(s) found on Ftp server.", 4), Times.Exactly(1));
我已经为我的记录器创建了一个模拟项目,这样我就可以验证对它进行了哪些调用;像这样:
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 个文件被传递下来。
那么为什么当我验证一个调用时它失败了? 任何建议。
在模拟设置中,您告诉记录器第二个参数是一个数组,但随后您在 运行 时传入了一个计数。我怀疑这将是问题所在。尝试更改为:
It.IsAny<object>()
另一个想法,您在 .Verify 中应用的测试看起来有点奇怪。我不确定 Times.Exactly(1) 是什么意思,如果模拟试图 运行 验证生成的格式字符串,您可能只想传入 1?
发现是字符串封装没打通。将验证更改为
mock_log.Verify(m => m.InfoFormat("{0} file(s) found on Ftp server.", 4), Times.Exactly(1));