gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:23:46 27 4
gpt4 key购买 nike

我正在使用 AutoMapper 将 Entity Framework 实体映射到业务实体。业务逻辑类通过它们的构造函数将 IMappingEngine 作为依赖项。然后它被用在这样的方法中:

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

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

return result;
}

一切正常。问题是单元测试。我从 ProjectTo 实现中了解到我需要 stub IMappingEngine.CreateMapExpression 方法。但它似乎过于复杂。有没有更简单的解决方案?当然,可以通过在测试设置方法中配置映射,然后将 Mapper.Engine 传递给 SUT 来使用 AutoMapper 的实现,但它闻起来像集成测试,而不是单元。

最佳答案

ProjectTo 只是生成 Select LINQ 投影的一种方式。您不会停止对 Select 的调用,因此您不会停止 AutoMapper。

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

另一个问题是 EF 依赖项。如果您希望此测试成为单元测试,则需要模拟 DbContext。但是这条路线的值(value)非常可疑,模拟的 DbContext 与真实的运行时行为有很大不同,以至于我不相信它。

关于unit-testing - 如何对使用 AutoMapper ProjectTo 的代码进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34483781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com