基于node的基础单元测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38355456/article/details/79480305

具体源码请见github:基础单元测试

1、所需要用到的模块

- assert nodejs原生的断言
- chai 是封装了的三方断言工具库
- power-assert 也是封装了的三方断言工具库
- mocha 专门用来测试的第三方框架,非常强大,推荐使用
- istanbul 是用来做单元测试覆盖率的,非常强大好用

2、首先建立一个基础的math.js的文件,写入一些需要测试的基础方法:

module.exports = {
    add: (...args) => {
        return args.reduce((prev, curr) => {
            return prev + curr;
        })
    },

    mul: (...args) => {
        return args.reduce((prev,curr)=>{
            return prev*curr;
        })
    }
};

3、chai 断言库的基本使用

const {should,expect,assert}=require('chai');
const {add,mul}=require('../01、math');

should();

add(2,3).should.equal(5);
expect(add(2,3)).to.be(5);
assert.equal(add(2,3),5);

4、chai 结合 mocha 做基本的单元测试使用方法

const {should,expect,assert}=require('chai');
const {add,mul}=require('../01、math');

describe('#math',()=>{
    before((done)=>{
       //这个地方是可以写一些测试前执行的函数
        done();
    });

    describe('add',()=>{
        it('should return 5 when 2+3', function () {
            expect(add(2,3),5)
        });

        it('should return -1 when 2-3', function () {
            expect(add(2,-3),-1)
        });

/*        it.only('should return -1 when 2-3', function () {
            expect(add(2,-3),-1)
        });*/

/*        it.skip('should return -1 when 2-3', function () {
            expect(add(2,-3),-1)
        });*/
    });

    describe('mul',()=>{
        it('should return 6 when 2*3', function () {
            expect(mul(2,3),6)
        });
    })
});

describe('#test',()=>{
    describe('add',()=>{
        it( 'should return 5 when 2+3', function () {
            expect(add(2,3),5);
        });
    });

    describe('mul',()=>{
        it('should return 6 when 2*3', function () {
            expect(mul(2,3),6);
        });
    });


});

describe这个函数里面,before可以对测试做前置处理。it是具体的测试回调,回调可以有一个参数,done,这个done其实也是一个回调函数,可以控制测试单元it的执行。

5、power-assert结合mocha 通过调用done回调函数的方式来进行单元测试

const assert=require('power-assert');
const {add,mul}=require('../01、math');

describe('#test',function(){
    describe('add',()=>{
        it('should return 5 when 2+3', function (done) {
            done(assert(add(2,3))===5);
        });

        it('should return -1 when 2-3', function (done) {
            let a=2,b=-3;

            done(assert(add(a,b))===-1);
        });
    });

    describe('mul',()=>{
        it('should return 6 when 2*3', function () {
            assert.equal(mul(2,3), 6)
        });
    })
});

6、最后可以在package.json 里面配置script启动项:

  "scripts": {
    "test": "mocha 18年/2月/7、单元测试/test/02、mocha.js",
    "cover": "istanbul cover node_modules/mocha/bin/_mocha 18年/2月/7、单元测试/test/02、mocha.js"
  },


猜你喜欢

转载自blog.csdn.net/qq_38355456/article/details/79480305