使用CucumberJS,让JavaScript与行为驱动开发结合
转载自: http://www.infoq.com/cn/news/2014/02/bdd-cucumberjs
Todd Anderson最近发表了一篇博客文章,介绍了新兴工具CucumberJS:面对基于JavaScript的项目,向其TDD(测试驱动开发)工作流中添加CucumberJS,有助于让项目与行为驱动开发的理念相结合。从而使得开发者在自外而内进行开发的同时,遵循TDD准则;并且还将运行自动化的测试,以确保在实现了支持某个特性的代码后,测试才会得出通过的结果。
Todd从事应用开发工作,并与人合著了三本书(点击查看)。他将CucumberJS描述成一种介于BDD工具Cucumber与JavaScript之间的接口,它能够运行在NodeJS上和现代网络浏览器中。CucumberJS支持使用Gherkin来撰写特性说明的定义,而并使用命令行工具来运行这些说明。该命令行工具将针对组成说明的各个步骤或场景,报告其结果是通过还是失败。他还提到,尽管Cucumber目前仅仅是测试框架,但开发者可以根据需要来引入断言库,令这些步骤通过或是失败。
Todd以一个杂货清单应用中的某特性为例,展示了如何使用Cucumber来适应BDD:
特性:购物者能够将某项物品添加到其杂货清单
场景:物品添加到杂货清单
假定(Given)现在我的杂货清单是空的
当(When)我向其中添加一项物品时
则(Then)该杂货清单将包含单一的一项物品
该特性定义了一项业务价值,而该场景则定义了提供该价值的步骤。每个场景都包含一系列的步骤,它们由一些关键词来定义:假定、当……时、则(Given, When, Then);而CucumberJS将阅读特性说明,而后执行这些步骤。
针对结合Node.JS来使用CucumberJS的话题,Todd给出了一些示例,在示例中测试经过了从失败到通过的过程,与此同时它们也实现并运行了杂货清单应用。
在总结中,Todd深信:当进行重构和Bug修复时,使用测试套件管理并测试代码,将会获得回报;同时他表示将继续发表一系列新的文章,以展示如何结合浏览器来使用CucumberJS进行测试。
行为驱动开发的概念,最初由 Dan North在2006年提出。Cucumber则是一个用于行为驱动开发的开源工具,目前支持包括JavaScript在内的九种编程语言。