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

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

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

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

分享:

  那么使用如下代码便可以模拟出一个HttpContext了,这样依赖就不存在了。

     //设置Cookie环境
     Thread.GetDomain().SetData(".appPath"@"D:\Test");
     Thread.GetDomain().SetData(
".appVPath""/");
     TextWriter tw 
= new StringWriter();
      
string address = "http://www.sina.com.cn/";
     HttpWorkerRequest wr 
= new MyWorkerRequest("login.aspx""", tw, address);
     HttpContext.Current 
= new HttpContext(wr);

  其实说这个事情,本身并不是为了这个技巧,而是想借这个例子说明怎么去考虑层的职责。比如对HttpContext这个东西,因为你知道你现在设计的是Web程序,你直接使用了这个。但如果有一天同样的业务,让你做一个WinForm呢?HttpContext该怎么办?所以,这样一分析就知道 HttpContext这个东西肯定不属于逻辑层。

  而如果你对逻辑层做单元测试的话,那么你必定会遇到上述问题。而一旦遇到这种问题,应该就说明了你的设计思路有问题,因为从逻辑本身来说,实现一个测试,我不应该需要借助任何的模拟。至于Mock这个东西,留给以后的篇幅吧。


相关链接:

走进单元测试(2):必须要自动化

走进单元测试(1):为什么难以广泛应用?

33/3<123
春暖花开更文季,点击参与还有惊喜礼品~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号