美文网首页
Mocha(未完待续)

Mocha(未完待续)

作者: Carmen_e69d | 来源:发表于2019-03-22 17:38 被阅读0次

    Mocha(未完待续.)

    • 定义
    • 安装
    • 起步
    • Describe()it()
    • 多次使用done
    • ASSERTION(断言)和断言库的使用
    • 异步代码
      • Promise
      • Async和Await
    • 同步代码
    • 箭函数

    定义

    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的上下文

    相关文章

      网友评论

          本文标题:Mocha(未完待续)

          本文链接:https://www.haomeiwen.com/subject/vmbrvqtx.html