在AutoMapper中爲Map函數設置模擬期望的最佳方式是什麼?使用Moq模擬AutoMapper Mapper.Map調用
我提取IMapper接口,以便我可以設置期望的接口。我的映射器有依賴關係,所以我必須將它們傳遞給映射器。
當我創建2個我的映射器類,2個不同的依賴實現時會發生什麼?我假定兩個映射器都將使用相同的依賴實例,因爲AutoMapper映射是靜態的。或者AutoMapper甚至可能會拋出一個異常,因爲我試圖用相同的對象設置2個不同的地圖。
最好的解決辦法是什麼?
public interface IMapper {
TTarget Map<TSource, TTarget>(TSource source);
void ValidateMappingConfiguration();
}
public class MyMapper : IMapper {
private readonly IMyService service;
public MyMapper(IMyService service) {
this.service = service
Mapper.CreateMap<MyModelClass, MyDTO>()
.ForMember(d => d.RelatedData, o => o.MapFrom(s =>
service.getData(s.id).RelatedData))
}
public void ValidateMappingConfiguration() {
Mapper.AssertConfigurationIsValid();
}
public TTarget Map<TSource, TTarget>(TSource source) {
return Mapper.Map<TSource, TTarget>(source);
}
}