发布于 2017-08-07 10:00:10
你有两个选择:
ILogger<Foo>
的空实现,并将其实例传递给ctor。发布于 2018-12-18 16:28:41
从DotNetCore2.0开始,有一个通用的NullLogger类可用:
var foo = new Foo(NullLogger<Foo>.Instance);
https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.abstractions.nulllogger-1?view=aspnetcore-2.1 (docs) https://github.com/aspnet/Logging/blob/master/src/Microsoft.Extensions.Logging.Abstractions/NullLoggerOfT.cs (源)
或者如果你需要它作为你服务的一部分:
services.AddSingleton<ILoggerFactory, NullLoggerFactory>();
发布于 2017-10-23 00:12:16
您可以使用ILogger<Foo>
作为工厂创建一个NullLoggerFactory
实例。
考虑以下控制器:
public abstract class Foo: Controller
{
public Foo(ILogger<Foo> logger) {
Logger = logger;
}
public ILogger Logger { get; private set; }
}
一个样本单元测试可以是:
[TestMethod]
public void FooConstructorUnitTest()
{
// Arrange
ILogger<FooController> logger = new Logger<FooController>(new NullLoggerFactory());
// Act
FooController target = new FooController(logger);
// Assert
Assert.AreSame(logger, target.Logger);
}
https://stackoverflow.com/questions/45543869
复制相似问题