📜  Node.js 断言完整参考(1)

📅  最后修改于: 2023-12-03 15:33:10.805000             🧑  作者: Mango

Node.js 断言完整参考

Node.js 中的断言模块提供了一种简单的方法来测试代码中的条件是否满足期望。如果条件不满足,断言会抛出一个 AssertionError,并在控制台上输出相关的错误信息。本文将对 Node.js 断言模块的使用方法进行详细介绍。

安装断言模块

在 Node.js 中,断言模块是内置的,不需要额外安装。我们只需要在代码中引入即可。

const assert = require('assert');
常用的断言方法
assert.ok(value, [message])

该方法用于测试一个值是否为真值。如果是,则断言成功,否则抛出 AssertionError。可选参数 message 用于输出错误信息。

assert.ok(true, 'this will not throw');
assert.ok(1, 'this will not throw');
assert.ok(false, 'this will throw an AssertionError');
assert.ok(0, 'this will throw an AssertionError');
assert.equal(actual, expected, [message])

该方法用于测试两个值是否相等。如果是,则断言成功,否则抛出 AssertionError。可选参数 message 用于输出错误信息。

assert.equal(1, 1, 'this will not throw');
assert.equal('hello', 'hello', 'this will not throw');
assert.equal(1, 2, 'this will throw an AssertionError');
assert.equal('hello', 'world', 'this will throw an AssertionError');
assert.deepEqual(actual, expected, [message])

该方法用于测试两个对象是否深度相等。如果是,则断言成功,否则抛出 AssertionError。可选参数 message 用于输出错误信息。

assert.deepEqual({ a: 1 }, { a: 1 }, 'this will not throw');
assert.deepEqual([1, 2, 3], [1, 2, 3], 'this will not throw');
assert.deepEqual({ a: 1 }, { b: 1 }, 'this will throw an AssertionError');
assert.deepEqual([1, 2, 3], [3, 2, 1], 'this will throw an AssertionError');
assert.strictEqual(actual, expected, [message])

该方法用于测试两个值是否绝对相等(即不通过类型转换)。如果是,则断言成功,否则抛出 AssertionError。可选参数 message 用于输出错误信息。

assert.strictEqual(1, 1, 'this will not throw');
assert.strictEqual('hello', 'hello', 'this will not throw');
assert.strictEqual(1, '1', 'this will throw an AssertionError');
assert.strictEqual('hello', 'world', 'this will throw an AssertionError');
assert.notStrictEqual(actual, expected, [message])

该方法用于测试两个值是否不绝对相等。如果是,则断言成功,否则抛出 AssertionError。可选参数 message 用于输出错误信息。

assert.notStrictEqual(1, '1', 'this will not throw');
assert.notStrictEqual('hello', 'world', 'this will not throw');
assert.notStrictEqual(1, 1, 'this will throw an AssertionError');
assert.notStrictEqual('hello', 'hello', 'this will throw an AssertionError');
自定义错误

我们也可以使用 AssertionError 的构造函数来自定义错误信息。

assert.throws(
  () => {
    throw new Error('wrong value');
  },
  Error,
  'this will not throw'
);

assert.throws(
  () => {
    throw new Error('wrong value');
  },
  TypeError,
  'this will throw a TypeError'
);
总结

本文介绍了 Node.js 断言模块的使用方法,包括常用的断言方法和自定义错误。通过灵活运用这些方法,我们可以编写更加健壮、可靠的 Node.js 应用程序。