asp.net-mvc - 在 ASP.NET MVC 应用程序中测试 AutoMapper 配置采用什么方法?

标签 asp.net-mvc testing integration-testing automapper

我们正在使用 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/

相关文章:

c# - 模块化网站设计,使用 ASP.NET MVC,我想要一个不那么单一的设计

c# - 更新 Entity Framework 时出现错误

Android list 权限与运行时权限不匹配

angular - 在 Angular 项目中使用 Jasmine 调用测试回调函数

Android Studio 集成测试无法解析符号 AndroidJUnit4

c# - 服务器上的 HangFire 重复作业失败,并出现 Autofac.Core.Registration.ComponentNotRegisteredException 或无参数异常

jquery - ASP.Net MVC 3 : Custom unobtrusive validation

python - 运行 django 测试会导致重复的列名 id

ruby-on-rails - Rails 与 Capybara 的集成测试正在使用先前测试中的值填写表单

android - 使用集成测试时,Gradle 无法从 AndroidManifest.xml 中正确获取元数据