您当前的位置: 首页 >  单元测试
  • 1浏览

    0关注

    265博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

NodeJs单元测试之 API性能测试

可可爱爱的程序员 发布时间:2022-02-16 20:25:24 ,浏览量:1

1.下载插件

#初始化仓库
npm init -y

#断言库
npm install --save-dev chai 

#测试框架 (不包括断言库,所以需要自己加载断言库)
npm install --save-dev mocha

#代码覆盖率
npm install --save-dev istanbul
复制代码

2.简单实现断言demo

//path:test/simple.js 
/*使用抽象相等比较(==)测试 actual 和 expected 参数之间的浅层强制相等。 NaN 是特殊处理的,如果双方都是 NaN,则视为相同。*/
const assert = require("assert");//node 内置断言门模块
const { add, mul } = require("../src/math");
assert.equal(add(2, 3), 5);
//执行 node test/simple.js 根据add方法返回值2+3=5,equal两个参数相等所以控制台不会做任何输出

assert.equal(add(2,4),5)
//验证一个错误的case 控制台会输出expected 6 to equal 5
复制代码
//path:src/math.js  //验证文件
function getMin(arr) {
  return b - a;
}
module.exports = {
  add: (...args) => {
    return args.reduce((prev, curr) => {
      return prev + curr;
    });
  },
  mul: (...args) => {
    return args.reduce((prev, curr) => {
      return prev * curr;
    });
  },

  cover: (a, b) => {
    if (a > b) {
      return a - b;
    } else if (a === b) {
      return a + b;
    } else {
      return getMin(a, b);
    }
  },
};

复制代码

3.基于mocha编写单元测试脚本

//path:test/mocha.js
const { should, expect, assert } = require("chai");//引入断言库

const { add, mul, cover } = require("../src/math");//引入测试方法
//描述
describe("#math", () => {
    //描述
  describe("add", () => {
    it("should return 5 when 2 + 3", () => {
      assert.equal(add(2, 3), 5);
    });

    it("should return 8 when 2 + 6", () => {
      assert.equal(add(2, 6), 8);
    });
  });
  describe("mul", () => {
    it("should return 15 when 3 * 5", () => {
      assert.equal(mul(3, 5), 15);
    });
  });

  describe("cover", () => {
    it("should return 2 when cover(5, 3)", () => {
      assert.equal(cover(5, 3), 2);
    });
    it("should return 4 when cover(2, 2)", () => {
      assert.equal(cover(2, 2), 4);
    });
    it("should return 2 when cover(2, 4)", () => {
      assert.equal(cover(2, 4), 2);
    });
  });
});


//更多mocha 请查看官方文档再次不做过多介绍
//https://mochajs.cn/#exclusive-tests
复制代码

4.配置scripts in package.json

"scripts": {
    "test": "mocha test/mocha.js",
    //windows
    "cover":"istanbul cover node_modules/mocha/bin/_mocha test/mocha.js"
    //mac
     "cover":"istanbul _mocha test/mocha.js"
 },
复制代码

5.性能测试

 # npm i --save-dev  benchmark
复制代码
//path:test/m.js
const Benchmark=require('benchmark')
const suite = new Benchmark.Suite;

// add tests 添加两个测试
//1.正则表达式 2.indexOf
suite.add('RegExp#test', function() {
  /o/.test('Hello World!');
})
.add('String#indexOf', function() {
  'Hello World!'.indexOf('o') > -1;
})
// add listeners
.on('cycle', function(event) {
    //每一个事件执行完 输出测试结果
  console.log(String(event.target));
})
.on('complete', function() {
    //当执行完测试 返回执行最快的测试名称
  console.log('Fastest is ' + this.filter('fastest').map('name'));
})
// run async
.run({ 'async': true });
//执行 node test/benchmark.js

//RegExp#test x 41,459,903 ops/sec ±0.93% (93 runs sampled)
//String#indexOf x 932,426,480 ops/sec ±0.41% (94 runs sampled)
//Fastest is String#indexOf
//
复制代码

关注
打赏
1656598245
查看更多评论
立即登录/注册

微信扫码登录

0.2334s