在掌握 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); }); });
更多的可以看以下的文档
转载请注明:隨習筆記 » NodeJs笔记:mocha 单元测试