модульное тестирование автоматического картографирования с использованием moq - PullRequest
0 голосов
/ 26 октября 2018

У меня есть сервисный метод, который получает данные из репозитория, и с помощью автоматического преобразователя я сопоставляю его с dto.

public CustResponse GetCustomer(string id)
{
var repo = _myRepo.GetData(id);
var response = AutoMapper.Mapper.Map<CustResponse>(repo.custObj)
                           .Map(repo.addrObj);
return response;
}

Я создал метод расширения .map для сопоставления нескольких объектов в классе содин dto.

public static TDestination Map<TSource, TDestination>(this TDestination destination, TSource source)
{
    return Mapper.Map(source, destination);
}

Конфигурация Automapper:

m.CreateMap<CUSTOBJ,CustResponse>().ForMember(/*Some Properties*/);
m.CreateMap<ADDROBJ,CustResponse>().ForMember(/*Some Properties*/);

Теперь я хотел бы написать пример модульного теста для моего GetCustomer метода.Я не могу этого сделать, потому что мой метод зависит от Mapper.Map.

. Есть ли в любом случае, я могу переместить var response = AutoMapper.Mapper.Map<CustResponse>(repo.custObj).Map(repo.addrObj); на некоторый интерфейс и использовать объект интерфейса для вызова действия.

Таким образом, я смогу mock интерфейс автоматического картографирования.

Код модульного тестирования:

var repStub = new Mock<ICustomerRepository>();
var expected = new CustResponse();            
var mockMapper = new Mock<Mapper.Map>(); //Not working
var customer = new CustomerService(repStub.Object);
customer.GetCustomer("data");

Редактировать: Я не спрашиваю, должен ли яделать автоматическое тестирование или нет.Мои вопросы Мой текущий метод обслуживания не позволяет мне создавать moq объектов Mapper.Как я могу создать IMapper интерфейс с моей реализацией?

...