Node.js Assertion API All In One

发布时间 2023-10-07 12:11:09作者: xgqfrms

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

  1. 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]);
  1. 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

image

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

(? 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!

CJS error

image

fix:

# .js => .mjs => ESM
# .cjs => CJS
$ mv cjs-assert.js cjs-assert.cjs

image

refs

https://exploringjs.com/impatient-js/ch_assertion-api.html

https://exploringjs.com/nodejs-shell-scripting/downloads/nodejs-shell-scripting-book-preview.pdf



©xgqfrms 2012-2021

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 ?️,侵权必究⚠️!