我希望有一个测试,验证每次使用Automapper.Mapper.Map<T1,T2>()
时,我的Bootstrapper中都有相应的映射配置(AutoMapper.Mapper.CreateMap<T1,T2>()
)。
我正准备使用Roslyn与编译器连接并找到Map<>
方法的所有用法,然后尝试使用这些实例进行映射。虽然这样可以解决问题,但我认为我宁愿使用已存在的东西。
这是否存在?如果没有,有没有比使用Roslyn更好的方法呢?
答案 0 :(得分:1)
你正在深入研究元编程。
您可以做的最好的事情是将映射的类包含到一个或多个名称空间中,并检查这些名称空间中的所有类是否存在映射。为此,你不需要Roslyn,Cecil或其他任何东西。
如果你放弃编译时检查,至少你必须制定一些约定,如果你的约定定义得很好,你可以验证它们。
答案 1 :(得分:0)
问题是你无法确定 - 有很多情况下它不是确定性的(例如,类型Y
的模型可能会传递给AutoMapper,向下转发为object
。
作为正常代码覆盖的一部分,您应该覆盖映射的实际消耗量。
这是否意味着每种映射方法的单元测试都是一个不同的问题......