use generator and co in mocha

主要的点在于当 it() 函数的回调函数带有done参数,mocha会等到回调函数里面出 done 或者或者超时才完成一条测试。同时因为每个测试用例最多执行2000毫秒,所以要面对需要很长时间的测试,需要通过设置 -t 来修改最长时间(暂时没有更好的方法)

1
2
3
4
it('option is empty', function(done) {
...
done()//结束一条测试
});

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
describe('runBash', function() {
it('option is Sync', function(done) {
var instructionList = ['echo "one"', 'echo "two"'];
var option = {
webRoot: '../fake-natoo'
};
co(function*(done) {
var errCode = yield runBash(instructionList, option);
expect(errCode).to.be.equal(null);
done();//完成测试
}.call(this, done));//传入done
});
});

ps

Mocha默认每个测试用例最多执行2000毫秒(可以通过-t来调整)
Mocha默认会高亮显示超过75毫秒的测试用例(可以通过-s来调整)
<<测试框架 Mocha 实例教程>>(阮一峰)