php教程:php设计模式介绍之伪对象模式
日期:2008年7月3日 作者: 查看:[大字体 中字体 小字体]-
SimpleTest所使用的方法仅是伪对象的多种用法之一。伪对象的代码传递是另一种。随着PHP5的到来,你也许能看到伪对象以对象中的__call()方法来执行。
以下是如何用SimpleTest生成的伪对象来测试并重构MyMockSessionUser1类(如上例中)。
更进一步说,你能随心所欲的设置何种方法被调用以及调用多少次。你甚至可以验证那些根本不该被调用的方法。
下面是一个扩展型的测试,它用来建立和验证那些复杂的设计。
使用伪对象的原因很多,方法也多样化。但在我们继续前,让我们把另外的一些类加入进来,使其来龙去脉更加清楚。
接下来的一部分是重构已有脚本,创建一个用于检查用户是否有相应权限的名为UserLogin的类。
(在一个实际的程序中,你应当按照如上所示的逻辑来查询相应的数据表,这种小而且编写起来费神的类体现了你将如何运用ServerStub来组织代码———ServerStub是一个小型的表达你想法的类,但它只是在一些限制环境下可用。)
最后一部分是创建响应。为了最终在浏览器中显示,我们必须处理那不断增长的HTML内容,如果必要的话我们也会讨论HTTP重定向。(你也可以执行其他的http头的操作——这样说是为了能构隐藏它——在一个成熟的做法中,但这里使用的是一段更简单的代码,是为了使例子容易理解与关注。)
给出了这些模块后,也是时候将这些新开发的、已测试的组件聚合到一个页面中了。让我们写一个最终的类来协调这个页面的所以行为,取个合适的名字PageDirector。类PageDirector具有一个很简单的运用程序接口:你在实例化后可以用调用它的run()方法。
这个“bootstrap”文件运行新程序时应如下所示:
该文件包含了所需的已定义类,并为自己定义了一个常量,给PageDirector类(其用于传递类Session 和类Response所依赖的实例来组成构造函数)创建了一个实例来执行PageDirector::run()方法。
现在让我们来创建一些测试的实例来详细说明重构后的运用程序应该有的功能。
这段代码或多或少的展示了一个典型的运用程序的测试文件该是何种模样。它一开始就包含了一些SimpleTest文件,也包括了用伪对象来测试的mock_object.php文件。接着,那些辅助类被包含进来,方法Session::init()被调用,seesion开始。
紧接着的全是以“安全无害”为目标而开始的测试实例,类WebTestCase确保所有程序按要求执行, 然后是单独的用于新设计的类的测试(尽管这种类本章不会详述)。最后是我们接下去会讨论的PageDirectorTestCase类。
类PageDirector的核心任务是协调类Session和类Response的对象,产生最终的网页输出结果。
在这段代码的一开始,Mock::generate()创建了伪对象类的定义并定义了一个后面将要用到的常量。
假设对类Session 和类 Response的测试已经存在,下一步就是创建伪Session来模拟类 Session的状态。这个伪对象的设置和我们一开始所演示的例子极其类似。
因为PageDirector::run()方法正回显内容,你可以用输出缓存内容的办法来捕获它,看看是否正确。
这段代码证明了在SimpleTest中使用伪对象的必要性。我们来看看其中创建伪对象的一行代码$session =&new MockSession($this)。你可以使用继承自SimpleStub类(参见http://simpletest.sf.net/SimpleTest/MockObjects/SimpleStub.html#sec-methodsummary)的方法来创建你所希望的从对象(如同你在测试代码时所做的那样)返回的结果.下一步,实例化PageDirector类并用MockSession代替正式使用时的类来实例化相关代码。
注:setReturnValue()方法
- 上一页 [1] [2] [3] [4] 下一页
-
- php教程:php设计模式介绍之伪对象模式 相关文章:
- ·Excel:强大的公式函数
- ·各种文件后缀名与打开方式大全
- ·恢复exe文件打开方式,所有exe文件无法打开
- ·常见视频文件格式有哪些
- ·显示器工厂模式的进入方法集锦
- ·JSP文件下载的几种方式
- ·黑客必学:DOS状态下命令方式入侵系统
- ·使用 XSL 样式表无法查看 XML 输入
- ·『隐现式QQ空间开门效果3款』
- ·Excel“条件格式”公式实例
- php教程:php设计模式介绍之伪对象模式 相关软件
- ·金山打字 2006 正式版
- ·QQ堂 V2.1 Beta2 Build16 宠爱正式版
- ·腾讯QQ2007 新珊瑚虫正式版
- ·深山红叶PE工具箱 嫦娥一号纪念版 V30 正式版
- ·WisMencoder V1.99 正式版
- ·MaxDOS V5.8s U盘正式版
- ·侠盗猎车手 简体中文正式GBA版
- ·flv格式转3gp格式专用软件(微视转码工具)
- ·《铁血联盟2》黄金版TBS汉化补丁正式版
- ·拳皇KOF2001正式版
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:Flash游戏开发教程:第五节
精品推荐
热点TOP10
- ·Swt常用控件中文教程
- ·什么是LDAP
- ·一个Struts实现分页,增删改查,Tiles,国际化的DEMO
- ·ajax+php无刷新二级联动下拉菜单(省市联动)源码
- ·如何设置Tomcat的JVM虚拟机内存大小
- ·一棵php的类树(支持无限分类)
- ·php删除文件夹及其文件夹下所有文件
- ·自己写的一个PHP上传类
- ·用JFreeChart画统计分析柱状图
- ·域名查询代码公布
- ·TomCat 多虚拟站点配置
- ·PHP 优化配置——加速你的PHP程序
- ·学习教程:Java Annotation 高级应用
- ·PHP程序员都应该会用的五个工具
- ·JSTL 入门:表达式语言
- ·最近写的一个PHP操作Access类(PHP+ODBC+Access)
- ·基于Windows环境下的PHP开发环境搭建
- ·PHP模板引擎SMARTY
- ·php.ini配置,php.ini 中的 php-5.2.0 配置指令详解
- ·PHP环境搭建最新方法
特别推荐
- ·如何在本地安装调试运行PHP程序?
- ·PHP面向对象分析设计的61条军规
- ·php教程:php设计模式介绍之伪对象模式
- ·php教程:php设计模式介绍之工厂模式
- ·php入门交流:鼓励学习PHP的新手
- ·PHP程序员都应该会用的五个工具
- ·文件上传类
- ·PHP的类--功能齐全的发送邮件类
- ·用PHP编写PDF文档生成器
- ·php生成EXCEL的东东
- ·PHP编程与应用
- ·PHP网上调查系统
- ·一个多文件上传的例子(原创)
- ·用IE远程创建Mysql数据库的简易程序
- ·一次编写,随处运行
- ·JSP单页面网站文件管理器
- ·Apache2的httpd.conf翻译
- ·使用PHP的Socket写的POP3类
- ·一棵php的类树(支持无限分类)
- ·PHP实现简单线性回归之数学库的重要性
