加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在ASP.NET MVC应用程序中测试AutoMapper配置需要

发布时间:2020-12-16 10:00:35 所属栏目:asp.Net 来源:网络整理
导读:我们在ASP.NET MVC Web应用程序中广泛使用 AutoMapper,并在 this question中设置了AutoMapViewResult方法.因此,我们的操作如下所示: public ActionResult Edit(User item){ return AutoMapViewUserEditModel(View(item));} 如果尚未配置请求的映射,则会在应
我们在ASP.NET MVC Web应用程序中广泛使用 AutoMapper,并在 this question中设置了AutoMapViewResult方法.因此,我们的操作如下所示:

public ActionResult Edit(User item)
{
    return AutoMapView<UserEditModel>(View(item));
}

如果尚未配置请求的映射,则会在应用程序中创建隐藏的故障点 – 因为这不是编译时失败.

我正在考虑放置一些东西来测试这些映射.由于这需要测试实际的AutoMapper配置,我认为这应该作为集成测试的一部分来完成?这些测试应该按照控制器还是按实体构建?如何自动解析对AutoMapView的所有调用?

请注意,我们已经使用AssertConfigurationIsValid测试AutoMapper配置是否有效,它缺少我想要处理的映射.

解决方法

如果您的控制器操作如下所示:

public AutoMapView<UserEditModel> Edit(User item)
{
    return AutoMapView<UserEditModel>(View(item));
}

然后,您可以非常轻松地使用反射查找项目中的所有控制器操作.然后,检查AutoMapView操作结果的操作参数类型和泛型类型参数.最后,您询问AutoMapper是否具有这些输入/输出模型的类型映射. AutoMapper没有“CanMap”方法,但您可以使用FindTypeMapFor的IConfigurationProvider方法:

((IConfigurationProvider) Mapper.Configuration).FindTypeMapFor(null,typeof(User),typeof(UserEditModel);

只要确保它不是空的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读