Asp.net mvc 具有PerWebRequest生活方式依赖关系的单元测试控制器
我正在尝试为一个控制器编写一个单元测试,该控制器依赖于一个类型,其生活方式是“PerWebRequest” Castle引发以下异常: System.InvalidOperationException:HttpContext.Current为null。PerWebRequestLifestyle只能在ASP.Net中使用 我可以模拟HttpContext.Current属性来解决这个问题吗 我曾尝试使用MVCContrib的TestControllerBuilder初始化此控制器,但没有效果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初始化此控制器,但没有效果
SymptomTopicController controller = new SymptomTopicController();
controller.WorkOrderFulfillment = workOrderFulfillment;
TestControllerBuilder controllerBuilder = new TestControllerBuilder();
controllerBuilder.InitializeController(controller);
你看到这个问题了吗?
抽象依赖项,不要在测试中使用容器。依赖项是抽象的。。控制器依赖项通过注入解决。问题是如何模拟HTTPContext,而不是如何编写单元测试。依赖关系显然没有被抽象(足够)。如果是这样的话,您就不需要在测试中使用HTTPContext,因为controller不会对它有任何硬依赖,而且您描述它的方式在您的情况下是这样的,这意味着它不是抽象的。