Web API全局设置代码,也用于单元测试

时间:2015-11-16 09:32:06

标签: c# asp.net unit-testing asp.net-web-api2

假设我有一些全局应用程序设置代码,在我的Global.asaxApplication_Start中定义。例如,禁用证书检查:

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        // (...)
        ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
        // (...)
    }
}

说我也有一个单元测试,这取决于要运行的上面的代码。但是在我的单元测试中,Application_Start未被调用,因为我直接实例化控制器:

var controller = new TestSubjectController();

ASP.NET或Web API中是否有某种机制可以解决这个问题?定义设置代码的最佳方法是什么,防止我的代码重复?

研究
我已经在SO上经历了多个问题。他们中的大多数都专注于单元测试Application_Start本身,但这不是目标。其他问题倾向于使用应用程序外部(HTTP)接口进行测试,但是我希望能够在我的单元测试中直接实例化控制器。

1 个答案:

答案 0 :(得分:1)

除了Batavia的建议,您还可以使用foo([1, 2, 3]) 归因方法或您选择的单元测试框架等同于为某个类中的所有测试调用常用静态方法减少你所关注的重复。