¿Dónde validar la configuración de AutoMapper en la aplicación ASP.Net Core?
Después de buscar en el IMapper
interfaz (y gracias al enlace de documentación proporcionado por @LucianBargaoanu), encontré exactamente lo que necesitaba.
En ConfigureServices()
:
// Adds AutoMapper to DI configuration and automagically scans the
// current assembly for any classes that inherit Profile
// and registers their configuration in AutoMapper
services.AddAutoMapper();
La salsa secreta es agregar IMapper mapper
como parámetro para Configure()
- la lista de parámetros está inyectada por dependencia para que pueda hacer referencia a cualquier servicio registrado en ConfigureServices()
public void Configure(IApplicationBuilder app, ... , IMapper mapper)
{
...
mapper.ConfigurationProvider.AssertConfigurationIsValid();
}
Funciona exactamente como se esperaba.
El enfoque recomendado (ver la respuesta de JBogard) es mover esta prueba a una prueba unitaria:
public class MappingTests
{
private readonly IMapper _sut;
public MappingTests() => _sut = new MapperConfiguration(cfg => { cfg.AddProfile<MyAutomapperProfile>(); }).CreateMapper();
[Fact]
public void All_mappings_should_be_setup_correctly() => _sut.ConfigurationProvider.AssertConfigurationIsValid();
}