1. 你需要一个好的工具来写测试
对于大多数开发者来说,都不太喜欢编写测试。当你在编写测试的周期的时候,能有一个快速的效应时间,那么这件事将变得更容易。结合一个好的测试框架你会有一个更好的开始。
测试驱动开发(TDD, Test-driven development)是一种你编写单元测试和应用程序代码的软件开发方法。典型的就是写一个空的根方法,创建一个失败的测试来验证不存在的程序逻辑,直到全部的程序逻辑测试都变成绿色。最后,在你 push 你的提交前重构你的代码。
让我们创建一个基于 TypeScript 的 TDD 配置。
2. 立即运行,并且只显示失败的结果
大量的 IDE 都支持单元测试和测试驱动开发,但是大多数开发者使用文本编辑器编写 JavaScript。我们需要一个命令行的方式去创建一个快速的 TDD 配置。
它应该是:
- 改变的时候立即运行测试,因此我们只需要在保存文件的时候启动测试;
- 它应该只显示失败测试结果,因为我们的屏幕不是特别大,不能显示 100 个成功的测试(虚词)。
还有一个需要我们也关心的地方,如果在运行测试之前没有通过,这时候又开始一个新的测试,我们就需要停止前一个测试。这是 grunt + mocha 不能处理的。
3. 使用 TypeScript 建立快速的 TDD
我们需要的配置如下:
- 它需要工作在命令行;
- 能够 watch 文件的改变;
- 编译 TypeScript 和 运行测试用例;
- 前一个没通过的测试将被停止;
- 只显示失败的测试结果。
使用一个 gaze-run-interrupt 的 npm 包来 watch 文件的改变,并且出发一系列命令,也能 kill 前面的序列。还将使用 Mocha 和它的 min-reporter 功能来显示失败的测试。
配置步骤
- 在你的
package.json
文件中添加gaze-run-interrupt
开发依赖(devDependency) - 在你的项目结构中,加入一个
tdd
文件,并且给它执行权限。
#!/usr/bin/env node
var gaze_run_interrupt = require('gaze-run-interrupt');
gaze_run_interrupt('{src,test}/**/*.ts', [{
command: 'node_modules/.bin/tsc'
}, {
command: '../../node_modules/.bin/mocha',
args: ['--reporter', 'min'],
cwd: 'dist/js'
}]);
- 执行 TDD
node tdd
最后执行效果:
原文出自:http://bytearcher.com/articles/fast-tdd-setup-for-typescript/
注:原文的代码需要输入邮箱,我自己手敲了一下,放在 github tdd_demo 还有就是原文中的配置可以根据 vscode 工具进行优化,还有脚本的方式我修改为了 node 脚本执行的方式,其实有其它更好的方式,但是这篇文章主要是说明一种快速 TDD 软件开发的方式。