不过对 HTML 前端的测试有一个缺陷:JavaScript。超文本传输协议(HTTP)客户机代码对页面进行检索,但是却没有执行 JavaScript。因此如果我们在 JavaScript 中有很多代码,就必须创建用户代理级的单元测试。我发现实现这种功能的最佳方法是使用 Microsoft® Internet Explorer® 内嵌的自动化层功能。通过使用 PHP 编写的 Microsoft Windows® 脚本,可以使用组件对象模型(COM)接口来控制 Internet Explorer,让它在页面之间进行导航,然后使用文档对象模型(DOM)方法在执行特定用户操作之后查找页面中的元素。
这是我了解的对前端 JavaScript 代码进行单元测试的惟一一种方法。我承认它并不容易编写和维护,这些测试即使在对页面稍微进行改动时也很容易遭到破坏。
编写哪些测试以及如何编写这些测试
在编写测试时,我喜欢覆盖以下情况:
所有正面测试
这组测试可以确保所有的东西都如我们期望的一样工作。
所有负面测试
逐一使用这些测试,从而确保每个失效或异常情况都被测试到了。
正面序列测试
这组测试可以确保按照正确顺序的调用可以像我们期望的一样工作。
负面序列测试
这组测试可以确保当不按正确顺序进行调用时就会失败。
负载测试
在适当情况下,可以执行一小组测试来确定这些测试的性能在我们期望的范围之内。例如,2,000 次调用应该在 2 秒之内完成。
资源测试