我有一些Http请求捕获,我想针对我的MVC应用程序进行模拟,以最接近真实环境的方式对其进行测试。但是,为了能够在运行单元测试时调试应用程序,必须与测试同时运行应用程序。有办法吗?
P.S。我尝试采用DefaultControllerFactory
路径,并以与MVC框架处理Http请求的典型方式相同的方式进行操作,但未能使HttpRequest
,HttpContext
,{ {1}},RequestContext
。很多组件!因此,在这方面的任何帮助也将不胜感激。
这是我用于MVC路径的代码,
RouteData
此代码在 var context = new HttpContextWrapper(HttpContext.Current);
RouteData routeData = new RouteData();
routeData.Values.Add("{action}", "ActionName");
var requestContext = new RequestContext(context, routeData);
DefaultControllerFactory factory = new DefaultControllerFactory();
IController controller = factory.CreateController(requestContext, "HomeController");
// Set Form data of the request
controller.Execute(requestContext);
方法上引发异常,表明该方法无法在预初始化阶段调用。此外,CreateController
的{{1}}属性为空,因此我无法为其Form设置任何值。我试图通过在另一篇文章中建议的以下方式将以下Request
添加到HttpContext
来解决该异常,但是仍然遇到相同的异常。
AppSettings
此外,由于这是单元测试,并且没有可用的当前app.config
,因此我使用以下方法进行伪造,然后在运行此代码之前设置当前的<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>
。
HttpContext