如何验证ILogger<T>实例未记录任何LogError级别的日志?
ILogger无Error日志条目的验证实现
你原有逻辑是校验存在1次内容包含"Failed"的Error级别日志,要验证ILogger实例完全没有写入任何Error级别日志,只需要调整日志匹配规则、将调用次数校验改为Times.Never即可。
核心实现说明
- 移除原有匹配规则中对日志内容必须包含"Failed"的过滤,否则只会校验不存在带"Failed"的错误日志,漏过其他Error级别的日志
- 所有非日志级别的匹配参数统一改为
It.IsAny适配所有Error级别的日志调用 - 调用次数参数传入
Times.Never,代表符合条件的日志写入调用一次都不允许发生
实现代码
target.ProcessMainframeJobs(stream, filename, processorlog.Object, testBase.executionContext); processorlog.Verify(logger => logger.Log( It.Is<LogLevel>(logLevel => logLevel == LogLevel.Error), It.IsAny<EventId>(), It.IsAny<It.IsAnyType>(), It.IsAny<Exception>(), It.IsAny<Func<It.IsAnyType, Exception, string>>()), Times.Never);
如果你仅需要验证不存在内容包含"Failed"的Error日志、其他Error日志允许写入,只需要把原有代码中的
Times.Once替换为Times.Never即可,无需修改其他匹配条件。
内容的提问来源于stack exchange,提问作者One Developer
相关产品推荐
相关产品推荐

