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

本文关键字:用于 单元测试 代码 API 全局设置 Web | 更新日期: 2023-09-27 18:22:07

假设我有一些全局应用程序设置代码,在我的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)接口进行测试,但我希望能够在单元测试中直接实例化控制器。

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

除了Batavia的建议之外,您还可以使用[TestInitialize]属性化方法或您的单元测试框架的等价选择来为某个类中的所有测试调用通用静态方法,这将减少您担心的重复。