如何模拟IMappingExpression<;TSource,TDestination>;创建映射<;TS

本文关键字:lt TDestination gt 创建 TS 映射 TSource 何模拟 模拟 IMappingExpression | 更新日期: 2023-09-27 17:57:49

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

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

我的项目使用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<;TSource,TDestination>;创建映射<;TS

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