npm install --global mocha
// 相等或不相等
expect(4 + 5).to.be.equal(9);
expect(4 + 5).to.be.not.equal(10);
expect(foo).to.be.deep.equal({ bar: 'baz' });
// 布尔值为true
expect('everthing').to.be.ok;
expect(false).to.not.be.ok;
// typeof
expect('test').to.be.a('string');
expect({ foo: 'bar' }).to.be.an('object');
expect(foo).to.be.an.instanceof(Foo);
// include
expect([1,2,3]).to.include(2);
expect('foobar').to.contain('foo');
expect({ foo: 'bar', hello: 'universe' }).to.include.keys('foo');
// empty
expect([]).to.be.empty;
expect('').to.be.empty;
expect({}).to.be.empty;
// match
expect('foobar').to.match(/^foo/);
--recursive参数 递归运行目录里所有测试文件
--reporters参数可以显示所有内置的报告格式。
npm install --save-dev mochawesome
--reporter(-R) mochawesome 生产HTML格式报告,其他格式https://mochajs.org/#reporters
--watch(-w)参数用来监视指定的测试脚本。
--bail(-b)参数指定只要有一个测试用例没有通过,就停止执行后面的测试用例。
--grep(-g)参数用于搜索测试用例的名称(即it块的第一个参数),然后只执行匹配的测试用例。
npm install babel-core babel-preset-es2015 --save-dev
.babelrc
{
"presets": [ "es2015" ]
}
使用--compilers参数指定测试脚本的转码器。
--require babel-core/register
注意,Babel默认不会对Iterator、Generator、Promise、Map、Set等全局对象,以及一些全局对象的方法(比如Object.assign)转码。如果你想要对这些对象转码,就要安装babel-polyfill
npm install babel-polyfill --save
import 'babel-polyfill'
Mocha默认每个测试用例最多执行2000毫秒,如果到时没有得到结果,就报错。
需要用-t或--timeout参数,改变默认的超时设置。
Mocha默认会高亮显示超过75毫秒的测试用例,可以用-s或--slow调整这个参数。
,Mocha内置对Promise的支持,允许直接返回Promise,等到它的状态改变,再执行断言,而不用显式调用done方法
it('异步请求应该返回一个对象', function() {
return fetch('https://api.github.com')
.then(function(res) {
return res.json();
}).then(function(json) {
expect(json).to.be.an('object');
});
});
只有带有only方法的测试用例会运行。
skip方法,表示跳过指定的测试套件或测试用例
--recursive -R markdown > spec.md
--reporter doc > spec.html

本文详细介绍了 Mocha 测试框架的高级用法,包括全局安装、测试用例的编写、断言方法、测试报告生成、超时设置等。同时,还涵盖了 Babel 的集成与配置,以及 Promise 的异步测试技巧。
993

被折叠的 条评论
为什么被折叠?



