📜  Node.js assert.deepEqual()函数(1)

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

Node.js assert.deepEqual()函数

简介

assert.deepEqual(actual, expected[, message]) 是 Node.js 中的断言函数之一。它判断 actualexpected 是否深度相等。

具体来说,它会递归比较 actualexpected 中的每个属性和元素,如果它们在类型和值上都相等,则认为它们是相等的。

语法
assert.deepEqual(actual, expected[, message])

参数说明:

  • actual:要测试的实际值。
  • expected:期望的值。
  • message:可选参数,表示断言失败时输出的错误信息。
示例
const assert = require('assert');

const obj1 = {
  a: {
    b: 1
  }
};
const obj2 = {
  a: {
    b: 2
  }
};
const obj3 = {
  a: {
    b: 1
  }
};

assert.deepEqual(obj1, obj1); // 通过
assert.deepEqual(obj1, obj2); // 失败
assert.deepEqual(obj1, obj3); // 通过
注意事项
  • assert.deepEqual()assert.deepStrictEqual() 的区别在于它们对待原始值(例如字符串和数字)和对象的方式不同。assert.deepEqual() 对待原始值时比较它们的值,对待对象时比较它们的属性和元素。而assert.deepStrictEqual() 对待原始值时比较它们的类型和值,对待对象时比较它们的属性和元素以及类型。
  • 当传入的对象中包含循环引用时,assert.deepEqual() 会进入无限递归,导致堆栈溢出和性能问题。为避免这种情况,需要使用第三方库比如 fast-deep-equal