AutoMapper AssertConfigurationIsValid是否足以确保良好的映射?

Mor*_*gan 21 c# unit-testing automapper

我想问你一个关于AutoMapper的问题.我们正在对我们的映射进行单元测试:

var dtoFiltrePersonne = new DtoFiltrePersonne { Prop1 = "Test", Prop2 = 1234 };
Mapper.CreateMap<FiltrePersonne, DtoFiltrePersonne>();
var filtrePersonne = DtoAutoMappeur<DtoFiltrePersonne, FiltrePersonne>.Instance.MapFromDtoToEntity(dtoFiltrePersonne);
Assert.AreEqual(dtoFiltrePersonne.Prop1, filtrePersonne.Prop1);
Assert.AreEqual(dtoFiltrePersonne.Prop2, filtrePersonne.Prop2);
Run Code Online (Sandbox Code Playgroud)

我想知道这个单元测试是否提供相同的覆盖范围?

Mapper.CreateMap<FiltrePersonne, DtoFiltrePersonne>();
AutoMapper.AssertConfigurationIsValid()
Run Code Online (Sandbox Code Playgroud)

我查看了AutoMapper配置文档,对我来说并不是很清楚.我是否需要对每个映射进行单元测试或仅使用该AssertConfigurationIsValid方法?

Dmi*_*nik 23

它说:

执行此代码会产生AutoMapperConfigurationException,并带有描述性消息.AutoMapper检查以确保每个Destination类型成员在源类型上具有相应的类型成员.

每个成员都与目标类型相关.它可能不是正确的(因为总有异常情况),但它至少测试每个属性是从源类型移动到目标.

  • 真正的好处是,如果您以失败的测试开始,那么您必须*明确地处理所有情况*。我已经看到了许多手动测试,它们可以验证对象的每个属性的值,但是它们极不容易像测试的类本身一样被更新。这有助于您随着时间的推移不断更新映射。 (2认同)