Asp.net mvc 如何使用全局配置对MVC/WebAPI进行单元测试

Asp.net mvc 如何使用全局配置对MVC/WebAPI进行单元测试,asp.net-mvc,unit-testing,asp.net-web-api,Asp.net Mvc,Unit Testing,Asp.net Web Api,我想对控制器进行单元测试,但在Global.asax.cs文件中,我必须注册JSON格式化程序、自定义头和自动映射。由于VS单元测试函数是通过DLL而不是API测试控制器,因此没有创建HttpApplication,我的很多代码都无法测试。我怎样才能解决这个问题 测试JsonFormatter输出的最简单方法是什么,因为它实际上不是控制器的一部分,但也可能是异常源?要对控制器进行单元测试,我只需在测试套件中引用API DLL,并直接使用这些方法 为了进行更多的集成测试,确保您的路由和映射按预期工

我想对控制器进行单元测试,但在Global.asax.cs文件中,我必须注册JSON格式化程序、自定义头和自动映射。由于VS单元测试函数是通过DLL而不是API测试控制器,因此没有创建HttpApplication,我的很多代码都无法测试。我怎样才能解决这个问题


测试JsonFormatter输出的最简单方法是什么,因为它实际上不是控制器的一部分,但也可能是异常源?

要对控制器进行单元测试,我只需在测试套件中引用API DLL,并直接使用这些方法

为了进行更多的集成测试,确保您的路由和映射按预期工作,我在测试类中创建了一个到WebApi的HttpClient,并查看响应。
下面的文章很好地概述了如何从.NET客户端调用webApi函数: 我也有同样的问题。 对于Automopper,我运行了MapperConfig.Initialize();在我的单元测试的设置方法中(我使用NUnit)

我也在打电话 “WebApiConfig.Register(GlobalConfiguration.Configuration);”在我的设置方法中
但是在我的控制器中对Configuration.Services.GetTraceWriter()的调用返回空引用异常。所以我现在还不能帮上忙。

我遇到的问题是,我想使用AutoMapper,我在Application_Start中配置了它,如果您没有在ASP.NET应用程序的上下文中运行,它将不会执行。在构造函数中无法访问控制器中的Configuration属性,因为它是在创建控制器对象之后设置的。但它在操作方法中是可访问的。尝试将对Configuration.Services.GetTraceWriter()的调用移动到方法并移出构造函数。