每天学习一点点,成功增加一大步

NodeJs笔记:mocha 单元测试

NodsJS zhanghui 471℃

在掌握 nodeJs 的基本用法之后,研究了一下 Node 的单元测试。这里将使用 mocha 进行单元测试。

当前环境:

  • 操作系统:windows 10
  • 语言:typeScript

安装依赖库

这里要安装两个依赖库,分别是 assert 和 mocha

npm install --save-dev assert
npm install --save-dev mocha

如果只是开发测试目的,建议不要全局安装。

简单的测试

在测试文件 test.ts 中引入 asssert

import * as assert from 'assert';

最后在测试文件中输入 describe 用测试代码,因我这里用的是面向对象方式所以写了两层的嵌套,如果只是单纯的函数只用一层就够了。

describe('ClassName', () => {
    describe('FunctionName', function () {
        it('描述文字', async function () {
            await var serv = new ClassName(
                ...parmas
            ).execute().then((res) => {
                // console.log(res);
                assert.equal(1, res.IsSuccess);
            });
        });
    });
    …… // 如果在同一对象中还有其他的可以继续往下写
});

setTimeout

测试的时候默认的执行时长为 2000ms,可有时候我们测试所需时间大于 2000ms 怎么办? 另外,如果有性能要求,需要限时用例耗时 小于 2000ms 才算通过怎么办?

延时

该例子中有两个测试用例,正例和反例。

describe('Test timeout', function() {
    it('It exceed 2000ms time , and will fail', function(done) {// 异步测试,要用 done  
        var callback = function() {
            console.log("------");
            done();
        }
        setTimeout(callback, 3000);// 延迟 3000ms 执行,让其超时。该测试用例会失败。  

    });
    it('It exceed 2000ms time , but will pass', function(done) {
        this.timeout(5000);
        var callback = function() {
            console.log("------");
            done();
        }
        setTimeout(callback, 3000);// 延迟 3000ms 执行,但是设置timeout 为 5000ms,因此该用例会成功。  

    });

});

限时

实际测试中,可能对性能有要求,比如需要在 1000ms 内完成,否则判定测试失败。下面是个例子。

describe('Test timeout', function() {
    it('It should complete during 1000ms ', function(done) {
        this.timeout(1000);
        var callback = function() {
            console.log("------");
            done();
        }
        setTimeout(callback, 500);

    });
});

更多的可以看以下的文档

http://mochajs.org/

http://blog.csdn.net/hustzw07/article/details/73468970

 

转载请注明:隨習筆記 » NodeJs笔记:mocha 单元测试