c# - 使用最小起订量对自动映射器进行单元测试
问题描述
我有一个从存储库获取数据并使用自动映射器将其映射到 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);
}
自动映射器配置:
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
使用我的实现创建接口?
解决方案
推荐阅读
- c++ - Storage duration of temporaries and CWG procedure
- node.js - 护照示例代码显然没有运行
- rest - 想为 WSDL 指定本地文件路径以使用 Publisher 从中生成 REST API
- android - What is the problem of adding .dispose() after .subscribe()
- scala - How to access strings from C in GraalVM?
- rstudio - RStudio window larger than laptop screen
- node.js - Mongodb 查询 根据帖子的浏览量对博客帖子进行排序?
- powershell - Powershell Printout only certain section of lines
- database - In a form, how do you display data from 2nd, 3rd degree child tables that are separated by different relations?
- r - 将大型 RDS 文件写入 sparklyr 数据框-databricks