title | date | author | comments | tags | categories | |||
---|---|---|---|---|---|---|---|---|
mocha+chai使用记录 |
2017-10-10 04:06:52 -0700 |
J.2ue |
true |
|
|
mocha+chai
是比较流行的测试框架‘套装’,能实现一些基本的前端测试如函数功能测试,模拟登陆,异步测试,流程测试等
mocha
是一个测试工具库,它只纯粹对测试行为(过程)进行描述;而chai
是一个断言(推断)库,它可以将测试结果进行各种判断,以此推断是否符合预期,因此两者常常进行组合使用
//全局安装
$ npm install -g mocha
ps: 全局安装之后,mocha
命令将会在全局注册,可以在任何地方使用mocha
命令
//安装项目依赖
$ npm install mocha chai
├── test //测试用例
│ ├── hooks.js //生命钩子
│ ├── test.js //入口文件
│ └── unit //测试单例
│ ├── add.js
│ └── ...
└── src //业务代码
├── add.js
└── ...
所有测试代码都在test目录,所有的业务代码都在src目录
//src/add.js
function add(a, b){
return a + b;
}
module.exports = add;
//test/unit/add.js
var add = require('../../src/add.js');
var expect = require('chai').expect;
describe('加法函数', function () {
it('1 + 3 = 4', function () {
expect(add(1, 3)).to.be.equal(4);
});
});
$ mocha mocha/unit/add
加法函数
√ 1 + 3 = 4
1 passing (16ms)
The Expect / Should API covers the BDD assertion styles.
The Assert API covers the TDD assertion style.
- 非
promise
异步一定要带上done()
,用于通知mocha
该测试已经完成 - 异步通常和参数
-t
结合一起用
//test/unit目录下add.js和minus.js
$ mocha test/unit/{add,minus}.js
//test/unit目录下所有js后缀的文件
$ mocha test/unit/*.js
mocha
支持shell
和node
的通配符匹配规则,更多通配符规则可以查看各自的文档
- --recursive
Mocha
默认不对指定目录的子级目录匹配,如果需要使自己目录的测试用例运行,则需要加上--recursive
- --reporter
输出报告的格式,默认是
--reporter spec
,可以用--reporters
命令查看有哪些输出格式 - --watch 监听变化,每次修改自动执行test
- --timeout -t
Mocha
默认每个测试用例最多执行2000
毫秒,如果到时没有得到结果,就报错。对于涉及异步操作的测试用例,这个时间往往是不够的,需要用-t
或--timeout
参数指定超时门槛 - --hlep,-h
查看有哪些命令
mocha.opts
放在test
目录下,执行mocha
命令时回去读取里面的配置 命令行参数可以写在mocha.opts
文件内,如
$ mocha --reporter tap --recursive -t 3000
等价于
test/mocha.opts
文件内容
--reporter tap
--recursive
-t 13000
$ mocha
describe('hooks', function() {
before(function() {
// 在本区块的所有测试用例之前执行
});
after(function() {
// 在本区块的所有测试用例之后执行
});
beforeEach(function() {
// 在本区块的每个测试用例之前执行
});
afterEach(function() {
// 在本区块的每个测试用例之后执行
});
// test cases
});
可以写在测试用例内(每个describe
块内),此时只对当前测试用例有效
也可以写在外部,此时对所有的测试用例有效
- 内置
promise
对象 ES6
需要转码