我使用C#4.0,我需要单元测试一个服务.服务内的函数返回一个类似于我称为预期的变量的路径,这是我希望得到的路径.但是当我运行这个测试我得到HttpContext.Current为NULL的错误.我可以做些什么来解决这个问题,以便测试可以运行?
[TestMethod] public void GetPathTest() { var expected = System.IO.Path.GetFullPath(HttpContext.Current.Server.MapPath("~/Certificates/")); var path = _mockService.Setup(o => o.GetPath()).Returns(expected); }
解决方法
目前我找不到我以前使用的HttpContext的完整包装,但是目前我们只是创建一个空的请求的上下文,从那里开始,就像这样:
SimpleWorkerRequest request = new SimpleWorkerRequest("","",null,new StringWriter()); HttpContext context = new HttpContext(request);
然后在单元测试初始化或单元测试本身(在创建预期之前),您可以如下设置当前的HttpContext:
HttpContext.Current = context;
然后根据需要简单地将伪造的上下文和可能的假的会话状态等.
(编辑:这是所有在VS2008,框架3.5的方式).