Mocha+Chai+Istanbul单元测试
# 一、简介
Istanbul是JavaScript程序的代码覆盖率工具Mocha是一种测试框架,也就是运行测试的工具。用descibe和it方法,来定义test suit,为不同的测试分组。mocha本身并不提供assert断言,所以要提供更加有表现力的断言,可以搭配chai使用,当然也可以使用nodejs提供的assert模块
# 二、配置测试环境
安装相应的依赖包
npm install --save-dev mocha chai istanbul
@前端进阶之旅: 代码已经复制到剪贴板
- 安装完成之后,在
package.json文件的scripts下,添加执行测试和测试覆盖率检查的命令
{
"scripts":{
"cover": "istanbul cover _mocha -- -R spec --timeout 5000 --recursive",
"cover:check": "istanbul check-coverage",
}
}
@前端进阶之旅: 代码已经复制到剪贴板
- 注意,
window下必须要这样才可以执行cover
"cover": "istanbul cover C:\Users\Administrator\Desktop\test\node_modules\mocha\bin\_mocha --reporter test/mocha.js"
@前端进阶之旅: 代码已经复制到剪贴板
- 运行
npm run cover和npm run cover:check,就可以生成测试报告,前者生成测试报告,后者则是检查测试覆盖率是否达到要求

配置Istanbul
istanbul相关的执行参数,可以在命令行下执行时传递参数来制定,也可以在yaml格式的.istanbul.yml文件中配置。简单贴出一些重要的配置项
instrumentation:
root: . # 执行的根目录
extensions:
- .js # 检查覆盖率的文件扩张名
excludes: ['**/benchmark/**']
... ...
reporting:
print: summary
reports: [lcov, text, html, text-summary] # 生成报告的格式
dir: ./coverage # 生成报告保存的目录
watermarks: # 在不同覆盖率下会显示使用不同颜色
statements: [80, 95]
... ...
check:
global:
statements: 100
branches: 100
lines: 100
functions: 100