Контроллер модульного тестирования с IMapper, Automapper и XUnit - PullRequest
0 голосов
/ 15 января 2020

Использование новейшей версии 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 в тестах?

...