gpt4 book ai didi

c# - 如何在 C# AspNet Core 中模拟 LoggerFactory

转载 作者:太空狗 更新时间:2023-10-29 20:02:28 26 4
gpt4 key购买 nike

我正在尝试为 Controller 操作编写一些单元测试。为此,我使用了 XUnit 和 Moq。 Controller 在构造函数中注入(inject)了一个 ILoggerFactory。一个最小起订量如何进行测试?

我已经尝试为 Controller 类模拟一个 Logger,然后模拟 CreateLogger 以返回模拟 Logger,但是当调用 LogInformation() 函数时我不断收到各种测试运行时 NullReferenceExceptions。

        //   Logger that yields only disappointment...          
var mockLogger = new Mock<ILogger<JwtController>>();
mockLogger.Setup(ml => ml.Log(It.IsAny<LogLevel>(), It.IsAny<EventId>(), It.IsAny<object>(), It.IsAny<Exception>(), It.IsAny<Func<object, Exception, string>>()));
var mockLoggerFactory = new Mock<ILoggerFactory>();
mockLoggerFactory.Setup(mlf => mlf.CreateLogger("JwtController")).Returns(mockLogger.Object);

我假设问题是正在调用 LogInformation,这是一个扩展方法,那么如何最小化它呢?

最佳答案

它的值(value):除了模拟 ILoggerFactory,您还可以传递一个 NullLoggerFactory 的实例。 .此 NullLoggerFactory 将返回 NullLogger 的实例.根据文档,这是一个:

Minimalistic logger that does nothing.

关于c# - 如何在 C# AspNet Core 中模拟 LoggerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45221362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com