本文是一个速成班,介绍了如何编写可维护的 JavaScript。我们向一个贯穿全文的例子中逐渐添加新功能,并遵循如下简单的规则:编写一个单元测试, 然后让它通过。每个测试都起到质量反馈回路的作用,给那些想修改产品代码的人创建了一个安全保护网,以及一份可以执行的文档。通过简单、失败的测试开始每 个功能,我们可以保证所有的功能都被测试覆盖到了。我们也避免了重写代码后再进行测试的高昂代价。考虑到 JavaScript 开发者很容易深陷泥沼、难以 自拔的事实,这显得尤其难能可贵──只需要考虑一下 DOM API 和 JavaScript 语言本身之间有多少全局可变状态就够了。
这个贯穿全文的例子是赌场的 3 轴老虎机。每轴有 5 种可能的状态,用图片来表示。当老虎机的 play 按钮被按下时,每个轴会随机给出一种状态。老虎机的余额根据三个轴的状态是否相等而增加或者减少。 我们的工具有 stubs、mock 对象和一丁点的依赖注入。我们使用 JsUnit 运行单元测试,以及一个叫做 JsMock 的 JavaScript mock 对象库。集成测试──单元测试的补充,则超出了本文的范围。这并不意味着集成测试不重要──仅仅是因为我们希望得到更快的反馈,而不是从类似 Selenium 和 Watir 这样的工具那里得到更慢、更全面的反馈。
详细内容,请阅读全文:使用 JsUnit 和 JSMock 的 JavaScript 测试驱动开发。
评论