Найти в Дзене

WebApplicationFactory, AutoMapper, и доступ к активной конфигурации

В общем-то, задача простая, но на всякий случай, запишу для памяти. Итак, есть у нас интеграционный тест с xUnit и WebApplicationFactory. Но при этом нужно: 1) Получить лицензионный ключ AutoMapper, который сконфигурирован на проверяемом сервисе 2) Проверить стороннюю (не используемую на сервисе) конфигурацию AutoMapper Код у меня получился такой: // Arrange IConfiguration configuration = _factory.Services.GetRequiredService<IConfiguration>(); string? storedLicenseKey = configuration["AutoMapperLicenseKey"]; if (string.IsNullOrEmpty(storedLicenseKey))
throw new Exception("Не найден ключ лицензии AutoMapper"); using var scope = _factory.Services.CreateScope(); ILoggerFactory loggerFactory = scope.ServiceProvider.GetRequiredService<ILoggerFactory>(); MapperConfiguration mapperConfiguration = new(delegate(IMapperConfigurationExpression cfg)
{
cfg.LicenseKey = storedLicenseKey;
cfg.AddProfile<AutomapperProfile>();
},
loggerFactory); // Act & Assert mapperConfiguration.AssertConfig

В общем-то, задача простая, но на всякий случай, запишу для памяти. Итак, есть у нас интеграционный тест с xUnit и WebApplicationFactory. Но при этом нужно:

1) Получить лицензионный ключ AutoMapper, который сконфигурирован на проверяемом сервисе

2) Проверить стороннюю (не используемую на сервисе) конфигурацию AutoMapper

Код у меня получился такой:

// Arrange
IConfiguration configuration = _factory.Services.GetRequiredService<IConfiguration>();
string? storedLicenseKey = configuration["AutoMapperLicenseKey"];
if (string.IsNullOrEmpty(storedLicenseKey))
throw new Exception("Не найден ключ лицензии AutoMapper");
using var scope = _factory.Services.CreateScope();
ILoggerFactory loggerFactory = scope.ServiceProvider.GetRequiredService<ILoggerFactory>();
MapperConfiguration mapperConfiguration = new(delegate(IMapperConfigurationExpression cfg)
{
cfg.LicenseKey = storedLicenseKey;
cfg.AddProfile<AutomapperProfile>();
},
loggerFactory);
// Act & Assert
mapperConfiguration.AssertConfigurationIsValid();