走进单元测试(3):消灭HttpContext的依赖,兼谈单元测试的设计辅助性

发表于:2010-6-04 10:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:gamix(cnblogs)    来源:51Testing软件测试网采编

  前篇提到过由于我们已经有了一个现成的平台,现在要对其进行单元测试的补完。而在这个过程中,就出现了HttpContext这类东西,其依附于一个host环境,对单元测试的自动化是一个很大的阻碍。

  对于HttpContext,如果没有一个web托管环境,其中的Request和Response等只读属性根本就无法造出来。而如果要搭建一个 web托管环境,不仅为测试带来了干扰(因为要确定是否是托管环境的问题),而且给测试的自动化带来了不方便。那么怎么去解决这个问题呢?

  在MSDN中我们可以查到一个叫SimpleWorkerRequest的东西,这个东西的提供了一个简单的 System.Web.HttpWorkerRequest的实现,使得我们可以在IIS之外托管ASP.NET应用程序。而当我们使用 reflector来查看这个东西的源码的时候,发现其中的一些方法很有趣:

 1 [ComVisible(false), AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal), AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
 2 public class SimpleWorkerRequest : HttpWorkerRequest
 3 {
 4     //...
 5 
 6     public override string GetHttpVerbName()
 7     {
 8         return "GET";
 9     }
10 
11     public override string GetHttpVersion()
12     {
13         return "HTTP/1.0";
14     }
15 
16     public override string GetLocalAddress()
17     {
18         return "127.0.0.1";
19     }
20 
21     public override int GetLocalPort()
22     {
23         return 80;
24     } 
25 
26     //...
27 }

  这果然是一个简单的实现啊,把IP地址,Http版本,端口等全部硬编码了。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号