Использование новейшей версии AutoMapper в ядре do tnet. Automapper настроен в WebApi со следующим профилем
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Company, CompanyViewModel>();
CreateMap<Address, AddressViewModel>();
}
}
и настроен в Startup.cs здесь:
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies())
...
}
В контроллерах это вводится через интерфейс IMapper, и все работает, как и ожидалось.
Но мне трудно разобраться, как провести модульное тестирование контроллеров и использовать профиль отображения. Я пытался издеваться над IMapper, но пришел к выводу, что вместо этого нужно использовать реальные сопоставления.
Я использую Xunit, и сейчас у меня есть конструктор в каждом тестовом классе, подобный этому, и передаю поле в Imapper:
public class TestClass
{
private Mapper mapper;
public TestClass()
{
MapperConfiguration mapperConfiguration = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Company, CompanyViewModel>();
cfg.CreateMap<Address, AddressViewModel>();
});
mapper = new Mapper(mapperConfiguration);
}
Очевидно, это, вероятно, не что-то это должно быть установлено в каждом тестовом классе. Таким образом, есть какие-либо идеи относительно того, как настроить AutoMapper только один раз и иметь возможность передавать его как объект IMapper в тестах?