1

我想要一个测试来验证,对于每次使用,在我的 BootstrapperAutomapper.Mapper.Map<T1,T2>()中有一个相应的映射配置 ( )。AutoMapper.Mapper.CreateMap<T1,T2>()

我正要走上使用Roslyn与编译器接口的道路,并找到该Map<>方法的所有用法,然后尝试使用这些实例进行映射。尽管这样做可以解决问题,但我想我宁愿使用已经存在的东西。

这存在吗?如果没有,还有比 Roslyn 更好的方法吗?

4

2 回答 2

1

您对元编程的研究太深了。

您可以做的最好的事情是将映射的类包含到一个或多个命名空间,并检查这些命名空间中的所有类是否存在映射。为此,您不需要 Roslyn、Cecil 或任何类似的东西。

如果您放弃编译时检查,至少您必须制定一些约定,并且如果您的约定定义明确,您可以验证它们。

于 2012-08-05T21:17:55.947 回答
0

问题是你不能确定——有很多情况下它不是确定性的(例如,一个类型的模型Y可能会被传递给 AutoMapper 向下转换为object.

作为正常代码覆盖的一部分,您应该提供对映射的实际消耗的覆盖。

这是否意味着每个映射方法的单元测试是一个不同的问题......

于 2012-08-05T20:26:05.320 回答