如何模拟 IMappingExpression<TSource, TDestination> CreateMap<TSource, TDestination>();



这是我开发单元测试所遵循的方法。

我的项目正在使用实体框架进行测试,所以我在测试中模拟实体框架,在测试项目中创建内存数据(用于表)。

我的项目使用Mapper从vw_eemployees到User,方法如下。

configuration.CreateMap<vw_employees, User>().ForMember(m => m.Id, opt =>opt.MapFrom(u => u.ID)).ForMember(m => m.DisplayName, opt =>opt.MapFrom(u => u.FullName));

所以我想模拟上面的配置。CreateMap,这样我就可以从mocking中获得User对象。

public class User : IHaveCustomMappings
{
    public string Id { get; set; }
    public string DisplayName { get; set; }
    public string Role { get; set; }
    public string UserDomain { get; set; }
    public long? bId { get; set; }
    public void CreateMappings(IMapperConfiguration configuration)
    {
        try
        {
            configuration.CreateMap<vw_employees, User>().ForMember(m => m.Id, opt =>opt.MapFrom(u => u.ID)).ForMember(m => m.DisplayName, opt =>opt.MapFrom(u => u.FullName));
        }
        catch (AutoMapperConfigurationException ex)
        {
            throw;
        }
    }
}

在单元测试中,我试图用以下方式模拟映射器,但它不起作用。

var mappingservice = new Mock<IMapperConfiguration>();
var im = new User { Id = "1234", DisplayName = "abc", Role =     null,UserDomain= "xyz", bid = null };
mappingservice.Setup(m => m.CreateMap<vw_employees, ApplicationUser>());

请帮助我,如何在测试时解决上面类的以下依赖项。

 public void CreateMappings(IMapperConfiguration configuration)
    {
        try
        {
            configuration.CreateMap<vw_employees, User>().ForMember(m => m.Id, opt =>opt.MapFrom(u => u.ID)).ForMember(m => m.DisplayName, opt =>opt.MapFrom(u => u.FullName));
        }
        catch (AutoMapperConfigurationException ex)
        {
            throw;
        }
    }

不要模拟IMappingExpression。实际上,不要在AutoMapper中模拟任何。直接使用即可。在AutoMapper中模拟任何东西都不会增加任何值,我无法想象你为什么要模拟配置

相关内容

  • 没有找到相关文章

最新更新