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