使用JsUnit和JSMock的JavaScript测试驱动开发
2010-09-14 13:44:54 来源:WEB开发网核心提示:本文是一个速成班,介绍了如何编写可维护的JavaScript,使用JsUnit和JSMock的JavaScript测试驱动开发,我们向一个贯穿全文的例子中逐渐添加新功能,并遵循如下简单的规则:编写一个单元测试,持续集成是另外一个重要的实践, 其与TDD结合使用时是对质量的一个“强有力的保证”,然
本文是一个速成班,介绍了如何编写可维护的JavaScript。我们向一个贯穿全文的例子中逐渐添加新功能,并遵循如下简单的规则:编写一个单元测试,然后让它通过。每个测试都起到质量反馈回路的作用,给那些想修改产品代码的人创建了一个安全保护网,以及一份可以执行的文档。通过简单、失败的测试开始每个功能,我们可以保证所有的功能都被测试覆盖到了。我们也避免了重写代码后再进行测试的高昂代价。考虑到JavaScript开发者很容易深陷泥沼、难以自拔的事实,这显得尤其难能可贵──只需要考虑一下DOM API和JavaScript语言本身之间有多少全局可变状态就够了。
这个贯穿全文的例子是赌场的3轴老虎机。每轴有5种可能的状态,用图片来表示。当老虎机的play按钮被按下时,每个轴会随机给出一种状态。老虎机的余额根据三个轴的状态是否相等而增加或者减少。
我们的工具有stubs、mock对象和一丁点的依赖注入。我们使用JsUnit运行单元测试,以及一个叫做JsMock的JavaScript mock对象库。集成测试──单元测试的补充,则超出了本文的范围。这并不意味着集成测试不重要──仅仅是因为我们希望得到更快的反馈,而不是从类似 Selenium和Watir这样的工具那里得到更慢、更全面的反馈。
JsUnit,一个JavaScript单元测试框架
JsUnit是JavaScript的开源单元测试框架。它受到JUnit的启发,并完全用JavaScript编写。作为最流行的 JavaScript单元测试框架,它还提供了一些ant任务,使开发人员在持续集成服务器上构建时很容易运行测试套件。持续集成是另外一个重要的实践, 其与TDD结合使用时是对质量的一个“强有力的保证”,不过这也超出了本文的范围。
更多精彩
赞助商链接