public void ConstructorHappyPath() { var source = new TestConfigurationSource(); source.Provider.Set("CustomLogger:Level", "Fatal"); var configuration = new ConfigurationBuilder() .Add(source) .Build(); var services = new ServiceCollection(); services.Configure <LoggerOptions>("MyLogger", configuration.GetSection("CustomLogger")); var serviceProvider = services.BuildServiceProvider(); var logProcessor = new Mock <ILogProcessor>().Object; var name = "MyLogger"; var logProviders = new[] { new Mock <ILogProvider>().Object }; var contextProviders = new[] { new Mock <IContextProvider>().Object }; var optionsMonitor = serviceProvider.GetRequiredService <IOptionsMonitor <LoggerOptions> >(); var options = optionsMonitor.Get("MyLogger"); Action <LoggerOptions> configureOptions = opt => { }; var reloadingLogger = ReloadingLogger.New(logProcessor, name, logProviders, contextProviders, optionsMonitor, options, configureOptions); string actualName = reloadingLogger.Name; ILogProcessor actualLogProcessor = reloadingLogger._logProcessor; IReadOnlyCollection <ILogProvider> actualLogProviders = reloadingLogger._logProviders; IReadOnlyCollection <IContextProvider> actualContextProviders = reloadingLogger._contextProviders; Action <LoggerOptions> actualConfigureOptions = reloadingLogger._configureOptions; actualName.Should().BeSameAs(name); actualLogProcessor.Should().BeSameAs(logProcessor); actualLogProviders.Should().BeSameAs(logProviders); actualContextProviders.Should().BeSameAs(contextProviders); actualConfigureOptions.Should().BeSameAs(configureOptions); Logger logger = reloadingLogger._logger; logger.Name.Should().Be(name); logger.Level.Should().Be(LogLevel.Fatal); logger.IsDisabled.Should().BeFalse(); logger.LogProviders.Should().BeSameAs(logProviders); logger.ContextProviders.Should().BeSameAs(contextProviders); logger.LogProcessor.Should().BeSameAs(logProcessor); }