Mocha(未完待续)

2019-03-22  本文已影响0人  Carmen_e69d

Mocha(未完待续.)


定义

Mocha是一个能够运行在node和浏览器的JavaScript测试框架。

安装

$ npm install --global mocha//全局安装
$ npm install --save-dev mocha //局部依赖包
安装

起步

在项目的package.json设置一个测试脚本
"scripts": {
  "test": "mocha"
}
然后在终端中运行 npm test 便可以进行测试

Describe()和it()

describe块称为“测试套件”,表示一组相关的测试。它是一个函数,第一个参数多是测试套件的名称,后面的参数是要测试的函数。
it块称为“测试用例”,表示一个单独的测试,是测试的最小单位。它是一个函数,第一个参数多是测试套件的名称,后面的参数是实际执行的函数。

多次使用done()

在基于回调的异步测试,多次使用done()会报错。

it('double done', function (done){
//使用两次done()
setTimeout(done);
setImmediate(done);
});

ASSERTION(断言)和断言库的使用

ASYNCHRONOUS CODE(异步代码)

测试异步代码,需要在测试完成时调用回调函数。通过添加一个回调函数(通常命名为done)给it(),mocha就能知道测试完这个函数之后就能完成测试。这个回调函数可以接受error或虚值。

describe('异步',function(){
it('代码测试',function(done){
    var x=true
    var test=function(){
        x=false
        console.log(x)
        done()
    }
    setTimeout(test,1000)
             })
})

Promise

除了使用done()回调函数,可以返回一个promise对象。当使用的APIs返回的是一个promise对象会更高效。

describe('Promise', function()
{
it('test', function(){
    const p = new Promise(function (resolve, reject)
    {
        resolve('ok');
    }
).
    then(result => result);
})
}
)

Mocha v3.0.0和更新版本,同时返回一个promise对象和done回调函数会导致异常。

describe('同时返回done和promise对象',function(){
it('test', function(done) {
  return new Promise(function(resolve) {
    resolve('ok');
}).then(done);
})
})

Async和await

如果js环境支持Async和await,可以使用该方法

describe('使用async/await',function(){
it('test',async function(){
    const p = await {
        async function(){
            await 100
        }
    }
    p
})
})

SYNCHRONOUS CODE(同步代码)

当在使用同步代码时,去掉回调函数 Mocha会自动一条一条地执行语句。

describe('同步代码',function(){
describe('用正则表达式测试十六进制值',function(){
    describe('测试#b8b8b8',function(){
        it('test',function(){
            let pattern=/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
            let s=pattern.test("#b8b8b8")
            let a=new Array([1,2,3]);
            let b=a.indexOf(0);
        })
    })
})
})

ARROW FUNCTIONS(箭头函数)

不建议用箭头函数,因为箭头函数绑定了this,不能访问到Mocha的上下文

上一篇 下一篇

猜你喜欢

热点阅读