当前位置:  开发笔记 > 前端 > 正文

如何对使用AutoMapper ProjectTo的代码进行单元测试?

如何解决《如何对使用AutoMapperProjectTo的代码进行单元测试?》经验,为你挑选了1个好方法。

我正在使用AutoMapper将实体框架实体映射到业务实体.业务逻辑类IMappingEngine通过其构造函数作为依赖.然后它用于这样的方法:

public int DoSomething()
{
    var users = _dbContext.Users.ProjectTo(null, _mappingEngine);

    // ...
    // some users' processing and business logic that should be tested
    // ...

    return result;
}

一切都很完美.问题是单元测试.我从ProjectTo实现中发现我需要存根IMappingEngine.CreateMapExpression方法.但它似乎过于复杂.有没有更简单的解决方案?当然,可以通过在测试设置方法中配置映射,然后传递Mapper.Engine给SUT 来使用AutoMapper的实现,但它有点像集成测试,而不是单元.



1> Jimmy Bogard..:

ProjectTo只是一种生成Select LINQ投影的方法.你不会发出对Select的调用,所以你不会发现AutoMapper.

只需在单元测试中直接使用AutoMapper.我没有看到它与使用其他核心框架程序集或JSON.Net之类的东西有什么不同.

另一个问题是EF依赖性.如果您希望此测试是单元测试,则需要模拟DbContext.但是这条路线具有非常可疑的价值,被模拟的DbContext与真实的路由器有很多不同的运行时行为,所以我不相信它.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有