小编Ale*_*son的帖子

使用Moq模拟AutoMapper Mapper.Map调用

什么是在AutoMapper中为Map函数设置模拟预览的最佳方法.

我提取IMapper接口,以便我可以设置该接口的预期.我的映射器有依赖关系,所以我必须将它们传递给映射器.

当我创建2个mapper类实例时会发生什么,有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);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# moq automapper

24
推荐指数
2
解决办法
2万
查看次数

标签 统计

automapper ×1

c# ×1

moq ×1