目录
- 测试框架
- 断言框架
- Mock 构建虚拟方法
- Rewire 暴露内部方法
- API 接口测试
- 代码覆盖率
测试框架
框架可以使用 Mocha (http://mochajs.org/)
安装
npm install mocha -g
测试语句
- describe() 定义一个区块
- it() 区块内的各个小目标
- before() 在执行所有 it 前的一系列操作
- after() 在执行所有 it 后的一系列操作
- beforeEach() 在执行每个 it 之前的操作
- afterEach() 在执行每个 it 之后的操作
目录结构
- lib 存放模块代码的地方
- test 存放单元测试代码的地方
- index.js 向外导出模块的地方(在 package.json 中指定)
- package.json 包描述文件
断言框架
- should.js
- expect.js
- 推荐 chai
const Should = require(‘chai’).should();
直接断言
xx.should.be.equal(yy)
异步结束断言
使用 done()
结束断言.
超时时间
默认 2s 超时时间, 可以使用 mocha -t 10000
进行设置, 或者非箭头函数的 describe 中使用 this.timeout(10000);
Promise
使用插件 chai-as-promised
1 | var chai = require('chai'); |
- eventually .have.property() | .equal() | .deep.equal()
- become(sth) 替代 .eventually.deep.equal()
- fulfilled 断言成功(执行了 resolve), 一般后面要有 then 再具体判断
- rejected 断言失败(执行了 reject)
- rejectedWith(str) 断言失败, 判断错误内容( new Error(str) )
- then
参考资料:
Mock 框架
为了在测试过程中, 模拟成功/失败的多种情况, 可以使用 Mock 框架.
1 | var fs = require('fs'); |
内部接口外部化 - rewire
如何测试没有 exports 出来的一些内部的方法, 或者希望 Mock 内部方法进行行为进行测试
1 | const rewire = require('rewire') |
API 接口测试
supertest 启动服务器, 模拟客户端请求
代码覆盖率
istanbul 对代码的行覆盖, 函数覆盖, 分支覆盖和语句覆盖进行统计.
yarn global add istanbul
进行覆盖率测试: istanbul cover _mocha