我正在构建一个 ASP.NET MVC4 应用程序。我没有使用任何模拟框架,如果可能的话,我现在不希望这样做。我的问题是两部分。
我有一个控制器,它使用在 Global.asax 中创建的变量。在控制器中,我像这样访问变量。
HttpContext.Application["MyVar"]
1)这是应用程序范围内变量使用的最佳实践吗?如果没有,最好的方法是什么?
为了对该控制器进行单元测试,我将以下代码(从此处)添加到我的测试方法中。
MyController target = new MyController();
var request = new HttpRequest("", "http://example.com/", "");
var response = new HttpResponse(System.IO.TextWriter.Null);
var httpContext = new HttpContextWrapper(new HttpContext(request, response));
target.ControllerContext = new ControllerContext(httpContext, new RouteData(), target);
target.ControllerContext.HttpContext.Application["MyVar"] = new MyVar();
问题是我无法向应用程序添加任何内容。最后一行代码似乎没有做任何事情,集合仍然是空的。我也在 VS 的即时窗口中尝试过,但没有成功。
2)在单元测试中,如何添加控制器需要的应用级变量?