单元测试
单元测试工具要做的事情
- 查找项目中的包含测试代码的文件
- 在找到的文件中查找测试用例
- 运行测试
- 捕获运行结果
- 生成运行报告
如何构建单元测试
- 一个无参数的 test 函数,这样我们可以统一运行,无需增加特殊逻辑
- 每个 test 函数创建一个用于测试的模板过程,通过断言将实际结果和预期结果进行比较,比较结果分为三种情况
- 通过
- 失败
- error,测试用例本身存在错误
- 如何区分 失败 和 error ?
- 可以通过 Error 的类型累处理,我们可以给 失败指定一个特殊类型,非此类型的视作测试用例本身存在错误。
命令行的 test 库,首先要扫描包含测试用例的文件,然后通过动态导入,例如 import(f) 方式。
const main = async(args) => {
const filenames = glob.sync('**/test-*.js')
for(const f of filenames) {
await import(f)
}
}
现在很多项目都是用 typescript 编写的,所以在需要将代码进行编译,编译到普通的 js 。
PS: 除了上面代码中的动态导入,在低版本上,可以生成一个 JS 文件,包含那些测试用例,例如生成的结果如下:
// generated.js
require('./test-a.js')
require('./test-b.js')
require('./test-c.js')
...