Node.js Assertion API All In One
Node.js 断言 API
严格模式
In strict assertion mode
, non-strict methods behave like their corresponding strict methods.
For example, assert.deepEqual()
will behave like assert.deepStrictEqual()
.
在严格断言模式
下,非严格方法的行为与其相应的严格方法类似。
例如,assert.deepEqual()
的行为类似于 assert.deepStrictEqual()
。
https://nodejs.org/api/assert.html#strict-assertion-mode
use "strict";
// js module 开启严格模式
(() => {
use "strict";
// js function 开启严格模式
})();
Assert API
- CJS
// const assert = require('node:assert').strict;
const assert = require('node:assert/strict');
assert.deepEqual([[[1, 2, 3]], 4, 5], [[[1, 2, '3']], 4, 5]);
- ESM
// import assert from 'node:assert/strict';
import { strict as assert } from 'node:assert';
assert.deepEqual([[[1, 2, 3]], 4, 5], [[[1, 2, '3']], 4, 5]);
https://nodejs.org/api/assert.html#assert
demos
$ node ./esm-assert.js
node:internal/process/esm_loader:108
internalBinding('errors').triggerUncaughtException(
^
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
+ actual - expected ... Lines skipped
[
[
[
1,
2,
+ 3
- '3'
]
...
4,
5
]
at file:///home/eric/Desktop/node-playground/esm-assert.js:6:8
at ModuleJob.run (node:internal/modules/esm/module_job:194:25) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: [ [ [ 1, 2, 3 ] ], 4, 5 ],
expected: [ [ [ 1, 2, '3' ] ], 4, 5 ],
operator: 'deepStrictEqual'
}
Node.js v18.18.0
import * as assert from 'node:assert/strict';
// Comparing primitive values:
assert.equal(3 + 4, 7);
assert.equal('abc'.toUpperCase(), 'ABC');
// Comparing objects:
assert.notEqual({prop: 1}, {prop: 1});
// shallow comparison
assert.deepEqual({prop: 1}, {prop: 1});
// deep comparison
assert.notDeepEqual({prop: 1}, {prop: 2});
// not deep comparison