这个测试使用了 PEAR 提供的 HTTP Client 模块。我发现它比内嵌的 PHP Client URL Library(CURL)更简单一点儿,不过也可以使用后者。 有一个测试会检查所返回的页面,并判断这个页面是否包含 HTML。第二个测试会通过将值放到请求的 URL 中来请求计算 10 和 20 的和,然后检查返回的页面中的结果。 这个页面的代码如下所示。 清单 11. TestPage.php <html><body><form> <input type="text" name="a" value="<?php echo($_REQUEST['a']); ?>" /> + <input type="text" name="b" value="<?php echo($_REQUEST['b']); ?>" /> = <span id="result"><?php echo($_REQUEST['a']+$_REQUEST['b']); ?></span> <br/> <input type="submit" value="Add" /> </form></body></html> 这个页面相当简单。两个输入域显示了请求中提供的当前值。结果 span 显示了这两个值的和。<span> 标记标出了所有区别:它对于用户来说是不可见的,但是对于单元测试来说却是可见的。因此单元测试并不需要复杂的逻辑来找到这个值。相反,它会检索一个特定 <span> 标记的值。这样当界面发生变化时,只要 span 存在,测试就可以通过。 与前面一样,首先编写测试用例,然后创建一个失败版本的页面。我们对失败情况进行测试,然后修改页面的内容使其可以工作。结果如下: 清单 12. 测试失败情况,然后修改页面 % phpunit TestPage.php PHPUnit 2.2.1 by Sebastian Bergmann. .. Time: 0.25711488723755 OK (2 tests) % 这两个测试都可以通过,这就意味着测试代码可以正常工作。 不过对 HTML 前端的测试有一个缺陷:JavaScript。超文本传输协议(HTTP)客户机代码对页面进行检索,但是却没有执行 JavaScript。因此如果我们在 JavaScript 中有很多代码,就必须创建用户代理级的单元测试。我发现实现这种功能的最佳方法是使用 Microsoftreg; Internet Explorerreg; 内嵌的自动化层功能。通过使用 PHP 编写的 Microsoft Windowsreg; 脚本,可以使用组件对象模型(COM)接口来控制 Internet Explorer,让它在页面之间进行导航,然后使用文档对象模型(DOM)方法在执行特定用户操作之后查找页面中的元素。
关于网站 | 客服中心 | 服务条款 | 友情链接 | 广告联系 | 本站历程 | 网站导航
吉ICP备05000107号