Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 具有PerWebRequest生活方式依赖关系的单元测试控制器_Asp.net Mvc_Httpcontext_Mvccontrib Testhelper - Fatal编程技术网

Asp.net mvc 具有PerWebRequest生活方式依赖关系的单元测试控制器

Asp.net mvc 具有PerWebRequest生活方式依赖关系的单元测试控制器,asp.net-mvc,httpcontext,mvccontrib-testhelper,Asp.net Mvc,Httpcontext,Mvccontrib Testhelper,我正在尝试为一个控制器编写一个单元测试,该控制器依赖于一个类型,其生活方式是“PerWebRequest” Castle引发以下异常: System.InvalidOperationException:HttpContext.Current为null。PerWebRequestLifestyle只能在ASP.Net中使用 我可以模拟HttpContext.Current属性来解决这个问题吗 我曾尝试使用MVCContrib的TestControllerBuilder初始化此控制器,但没有效果

我正在尝试为一个控制器编写一个单元测试,该控制器依赖于一个类型,其生活方式是“PerWebRequest”

Castle引发以下异常:

System.InvalidOperationException:HttpContext.Current为null。PerWebRequestLifestyle只能在ASP.Net中使用

我可以模拟HttpContext.Current属性来解决这个问题吗

我曾尝试使用MVCContrib的TestControllerBuilder初始化此控制器,但没有效果

  SymptomTopicController controller = new SymptomTopicController();
        controller.WorkOrderFulfillment = workOrderFulfillment;

        TestControllerBuilder controllerBuilder = new TestControllerBuilder();
        controllerBuilder.InitializeController(controller);

你看到这个问题了吗?


抽象依赖项,不要在测试中使用容器。

依赖项是抽象的。。控制器依赖项通过注入解决。问题是如何模拟HTTPContext,而不是如何编写单元测试。依赖关系显然没有被抽象(足够)。如果是这样的话,您就不需要在测试中使用HTTPContext,因为controller不会对它有任何硬依赖,而且您描述它的方式在您的情况下是这样的,这意味着它不是抽象的。