我们正在使用 AutoMapper在我们的 ASP.NET MVC Web 应用程序中广泛使用 this question 中列出的 AutoMapViewResult 方法.所以我们有如下所示的操作:
public ActionResult Edit(User item)
{
return AutoMapView<UserEditModel>(View(item));
}
如果未配置请求的映射,这会在应用程序中创建隐藏的故障点 - 因为这不是编译时故障。
我正在考虑放置一些东西来测试这些映射。因为这需要测试实际的 AutoMapper 配置,所以我认为这应该作为集成测试的一部分来完成?这些测试应该针对每个 Controller 还是每个实体来构建?自动解析对 AutoMapView 的所有调用的可能性如何?
请注意,我们已经在使用 AssertConfigurationIsValid 测试 AutoMapper 配置是否有效,我想处理的是缺失映射。
最佳答案
如果您的 Controller 操作如下所示:
public AutoMapView<UserEditModel> Edit(User item)
{
return AutoMapView<UserEditModel>(View(item));
}
然后您可以很容易地使用反射在您的项目中查找所有 Controller 操作。然后检查 AutoMapView 操作结果的操作参数类型和通用类型参数。最后,您询问 AutoMapper 是否有这些输入/输出模型的类型映射。 AutoMapper 没有“CanMap”方法,但您可以使用 FindTypeMapFor 的 IConfigurationProvider 方法:
((IConfigurationProvider) Mapper.Configuration).FindTypeMapFor(null, typeof(User), typeof(UserEditModel);
只要确保它不为空即可。
关于asp.net-mvc - 在 ASP.NET MVC 应用程序中测试 AutoMapper 配置采用什么方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6466662/