.net – 如何使单元测试可以使用HttpContext?
发布时间:2020-05-24 17:58:12 所属栏目:asp.Net 来源:互联网
导读:我想编写一个单元测试来测试一个名为UploadedFile的类的功能. 我面临的问题是这个类的静态构造函数使用HttpContext.Current属性,因为我从类库运行我的单元测试,我在测试时没有HttpContext. 看看我的静态构造函数: static UploadedFile(){ if (HttpContext.Cu
|
我想编写一个单元测试来测试一个名为UploadedFile的类的功能. 我面临的问题是这个类的静态构造函数使用HttpContext.Current属性,因为我从类库运行我的单元测试,我在测试时没有HttpContext. 看看我的静态构造函数: static UploadedFile()
{
if (HttpContext.Current == null)
throw new Exception("web server not available");
HttpServerUtility server = HttpContext.Current.Server;
// SET UploadedFileMappingFile Names:
_resourceFileNames = new StringDictionary();
_resourceFileNames[_suppoertedFileStructures] = server.MapPath(SupportedUploadedFileStructures);
_resourceFileNames[_supportedFileStructuresXSD] = server.MapPath(SupportedUploadedFileStructuresXSD);
_resourceFileNames[UploadedFileEnum.UploadedFileFormatENUM.CSV.ToString()] = server.MapPath(UploadedFileColumnMap);
}
我应该在我的测试环境中做什么,以便HttpContext.Current不会为null,我可以成功设置它: HttpServerUtility server = HttpContext.Current.Server; 解决方法你不应该在你的函数中直接使用HttpContext.Current,因为你几乎不可能进行单元测试,正如你已经发现的那样.我建议你改用 HttpContextBase,它可以在你的类的构造函数中传递,也可以作为你正在测试的方法的参数传递.这将允许此类的消费者传递真正的 HttpContextWrapper,并且在您的单元测试中,您可以模拟您需要的方法.例如,您可以调用该方法: var wrapper = new HttpContextWrapper(HttpContext.Current); Foo.UploadedFile(wrapper); 在您的单元测试中(使用Rhino Mocks): var contextMock = MockRepository.GenerateMock<HttpContextBase>(); // TODO: Define expectations on the mocked object Foo.UploadedFile(contextMock); 或者,如果您愿意,请使用Constructor Injection. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET MVC3:部分视图和主视图之间的交互
- asp.net-mvc – 使用Visual Studio和ASP.NET MVC加载时间非
- asp.net-mvc-3 – 了解网站是否在MVC中编写的技巧?
- asp.net-mvc-3 – 在MVC和Razor中创建向导步骤
- asp.net – 无法加载文件或程序集“Microsoft.Web.Extensio
- asp.net-mvc – MVC 4,复选框列表和我
- asp.net-mvc – 授权标签如何工作? – Asp.net Mvc
- asp.net – 多租户应用程序的输出缓存,因主机名和文化而异
- asp.net-mvc – ASP.NET MVC忽略所有url结尾的“.html”
- 使用ASP.net MVCJQuery将HTML标签(代码)作为字符串发布
推荐文章
站长推荐
- asp.net-mvc – 为什么我们使用ViewModels?
- 如何在ASP.NET 2.0应用程序中为API调用启用TLS 1
- asp.net-mvc – 有条件地在webgrid中显示图像 –
- ASP.NET:获取页面的文件名
- asp.net – CSRF验证令牌:会话ID安全吗?
- 有AsIFnet标记的#IF DEBUG吗?
- asp.net-mvc-3 – 创建MVC3剃刀助手,如Helper.Be
- asp.net-mvc-2 – asp.net-mvc2 – 不使用Model的
- asp.net 大文件上传 之 改版了的SlickUpload.Htt
- asp.net – 提供的URI方案’https’无效;预期’h
热点阅读
