美文网首页
Mocha学习笔记

Mocha学习笔记

作者: 灬小白 | 来源:发表于2018-06-16 23:01 被阅读0次

    安装

    使用npm全局安装:

    (c)npm install -g mocha
    

    或者在项目中当作依赖包进行安装:

    (c)npm install --save-dev mocha
    

    在文件夹中创建test文件夹,创建文件test.js

    const assert = require('assert')
    describe('Array', function () {
        describe('#indexOf()', function () {
            it ('当值不存在时,应返回-1', function () {
                assert.equal(-1, [1, 2, 3].indexOf(4))
            })
        })
    })
    

    创建package.json,添加运行脚本:

    {
        "scripts":{
            "test": "mocha"
        }
    }
    

    现在整个项目的目录结构是这样的

    mocha-test/
    |
    +- test/ <-- 存放所有test
    |
    |  |+- test.js <-- 测试文件
    |
    +- package.json <-- 项目配置文件
    |
    +- node_modules/ <-- npm安装的依赖包
    

    运行

    运行脚本,会执行test文件下所有的文件

    npm run test
    
    > mocha
    
      Array
        #indexOf()
          √ 当值不存在时,应返回-1
    
      1 passing (14ms)
    

    test.js文件中的代码就是测试脚本。测试脚本一般至少要有一个或者多个describe函数,而一个describe函数应有一个或多个it函数。

    describe函数,第一个参数会被输出在控制台中,作为一个Test Suite(用例集、测试套件)的描述,而且这个描述可以根据自己的需求来进行嵌套输出的。

    it函数,第一个参数是用来输出TestCase(测试用例)的描述,测试输出结果前面有对勾表示测试通过,第二个参数是一个函数,用来编写测试内容,用断言模块来判断测试结果的正确性。

    断言

    在上面例子中我们用到了assert,这个是Node自身的assert模块(断言),其实mocha支持各种断言库,例如:
    should.js
    chai
    expect.js
    better-assert
    unexpected

    同步代码

    在同步代码测试的时候,测试用例一个执行完就继续执行下一个用例
    在根目录下创建一个add.js的文件,代码如下

    module.exports = function (x, y) {
        return x + y
    }
    

    测试文件test.js代码如下

    const assert = require('assert')
    const add = require('../add')
    describe('加法测试', function () {
        it('1加1应等于2', function () {
            assert.strictEqual(add(1, 1), 2)
        })
        it('2加2应等于4', function () {
            assert.strictEqual(add(2, 2), 4)
        })
        it('3加3应等于6', function () {
            assert.strictEqual(add(3, 3), 6)
        })
    })
    

    测试结果如下

      加法测试
        √ 1加1应等于2
        √ 2加2应等于4
        √ 3加3应等于6
    
    
      3 passing (9ms)
    

    箭头函数

    不推荐在Mocha中使用箭头函数,由于this作用域的问题,箭头函数中,this无法正常获取Mocha上下文,这样,在运行下面的代码时,我们会发现第一个测试通过,第二测试会报错提示:this.timeout is not a function

    describe('function函数测试', function () {
        it('测试1', function () {
            this.timeout(1000)
            assert.ok(true)
        })
    })
    describe('箭头函数测试', () => {
        it('测试2', () => {
            this.timeout(1000)
            assert.ok(true)
        })
    })
    

    待续...

    相关文章

      网友评论

          本文标题:Mocha学习笔记

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