我想要一个测试来验证,对于每次使用,在我的 BootstrapperAutomapper.Mapper.Map<T1,T2>()
中有一个相应的映射配置 ( )。AutoMapper.Mapper.CreateMap<T1,T2>()
我正要走上使用Roslyn与编译器接口的道路,并找到该Map<>
方法的所有用法,然后尝试使用这些实例进行映射。尽管这样做可以解决问题,但我想我宁愿使用已经存在的东西。
这存在吗?如果没有,还有比 Roslyn 更好的方法吗?
我想要一个测试来验证,对于每次使用,在我的 BootstrapperAutomapper.Mapper.Map<T1,T2>()
中有一个相应的映射配置 ( )。AutoMapper.Mapper.CreateMap<T1,T2>()
我正要走上使用Roslyn与编译器接口的道路,并找到该Map<>
方法的所有用法,然后尝试使用这些实例进行映射。尽管这样做可以解决问题,但我想我宁愿使用已经存在的东西。
这存在吗?如果没有,还有比 Roslyn 更好的方法吗?
您对元编程的研究太深了。
您可以做的最好的事情是将映射的类包含到一个或多个命名空间,并检查这些命名空间中的所有类是否存在映射。为此,您不需要 Roslyn、Cecil 或任何类似的东西。
如果您放弃编译时检查,至少您必须制定一些约定,并且如果您的约定定义明确,您可以验证它们。
问题是你不能确定——有很多情况下它不是确定性的(例如,一个类型的模型Y
可能会被传递给 AutoMapper 向下转换为object
.
作为正常代码覆盖的一部分,您应该提供对映射的实际消耗的覆盖。
这是否意味着每个映射方法的单元测试是一个不同的问题......