Я добавил некоторые как pnet средства визуализации макета в свою конфигурацию NLog, и все отлично работает для моего веб-сайта, но когда я пытаюсь запустить свои интеграционные тесты, они выдают следующее сообщение об ошибке:
NLog.NLogConfigurationException: Ошибка при установке свойства 'Layout' в NLog.Targets.DatabaseParameterInfo ----> System.ArgumentException: невозможно найти LayoutRenderer: 'as pnet -request-cook ie'. Не включен ли NLog.Web?
Первоначально я хотел последовать их предложению и добавить пакет NLog.Web.AspNetCore в мой тестовый проект интеграции. Это ничего не сделало.
Вот как выглядит моя настройка интеграционного теста:
[OneTimeSetUp]
public static void BaseOneTimeSetUp()
{
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Development";
Assume.That(environment, Is.AnyOf("Development", "CI"), "Integration tests can only run in one of those environments");
var serviceCollection = new ServiceCollection();
serviceCollection.AddSingleton<IHostingEnvironment>(p =>
{
var mock = new Mock<IHostingEnvironment>();
mock.SetupGet(m => m.ContentRootPath).Returns(TestContext.CurrentContext.TestDirectory);
mock.SetupGet(m => m.EnvironmentName).Returns(environment);
return mock.Object;
});
Startup.AddConfiguration(serviceCollection); //throws NLogConfigurationException
}
А вот моя реализация метода StartConnect AddConfiguration:
public static void AddConfiguration(IServiceCollection services)
{
services.AddSingleton<IConfiguration>(s =>
{
var env = s.GetService<IHostingEnvironment>();
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", false, true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
var config = builder.Build();
// This next line throws the NLogConfigurationException
LogManager.Configuration = new NLogLoggingConfiguration(config.GetSection("NLog"));
return config;
});
}