跳转至

单元测试

let demoError = new Error("This is an error message");  // 创建一个Error对象

console.log(demoError.name);  // "Error"
console.log(demoError.message);  // "This is an error message"

throw demoError  // 手动抛出错误

错误处理

try {
    // 可能会抛出错误的代码
    const a = 1
    a() // 这里会抛出一个 TypeError
} catch (error) {
    // 处理错误
    console.log(error.message) // 输出 'a is not a function'
} finally {
    // 无论是否抛出错误,这里都会被执行
    console.log('执行完毕')
}

assert

Node.js 内置的断言模块

import assert from 'assert';

assert(0 === false);

Chai

一个流行的断言库,通常搭配测试框架使用,比如:Mocha + Chai

npm install chai

三种断言风格

Assert

是对 Node.js 内置断言模块 assert 的扩展

const chai = require('chai');
const assert = chai.assert;

assert.typeOf(5, 'number');

Should

const chai = require('chai');
const should = chai.should();

(5).should.be.a('number');

Expect

允许更具描述性的断言,以及更深层次的比较,更强大

  • gte greater than or equal to(大于或等于)
  • lte less than or equal to(小于或等于)
const chai = require('chai');
const expect = chai.expect;

const x = 7;

expect(x).to.be.a('number');
expect(x).to.equal("7")
expect(x).to.be.gte(5);  // 断言x是否大于等于5

Mocha

import assert from 'assert';

function sum(a, b) {
  return a + b;
}

// 通常使用 describe() 来分组,也可以自定义名字
describe('sum', () => {
    // it 用于定义具体的测试用例
    it('adds 1 + 2 to equal 3', () => {
      assert(sum(1, 2) === 3);
    });
  });
  • 配置:package.json
{
  "scripts": {
    "test": "mocha"
  }
}
  • 执行:npm test