我们正在使用Moq 4进行单元测试,尤其是控制器单元测试。我们正在使用Moq的Verify()方法来确保记录了错误。问题在于测试可以通过,但随后的下一次运行将失败。
我们正在使用Serilog作为记录器。
动作方法看起来像
public IActionResult Index(){
try{
var data = _repository.GetData();
return View(data);
}catch(Exception e){
Log.Error(e.Message);
}
}
所以单元测试正在使用
_mockLogger.Verify(x=> x.Write(LogEventLevel.Error,It.IsAny<string>()));
mockLogger 是在测试的构造函数中设置的,例如
var _mockLogger = new Mock<Serilog.ILogger>();
Log.Logger = _mockLogger.Object;
//...
并且该存储库被模拟为在调用时引发异常。
失败时,我们会收到错误消息
“ Moq.MoqException预期在Mock上调用至少一次,但从未执行过x=>x.Write(LogEventLevel.Error,It.IsAny<string>())”
有任何想法吗?
慕桂英546537
相关分类