Node.js 中的 Assert.notDeepStrictEqual() 方法

2025 年 3 月 1 日 | 阅读 4 分钟

在本文中,我们将讨论 Node.js 中 assert.notDeepStrictEqual() 方法的语法、参数、关键点和示例。

Node.js 中的 assert.notDeepStrictEqual() 方法是什么?

在 Node.js 中,assert 模块包含 assert.notDeepStrictEqual() 方法, 用于编写测试和断言。此特定方法用于确保两个值不相等。换句话说,它验证两个值不具有具有严格相等值和相同结构的嵌套属性。

通过将实际值和预期值的每个层级的比较应用到严格相等性 (===) 运算符,来确定两个值是否不深度相等。

"assert.notDeepStrictEqual()" 递归地检查两个值的属性并进行比较。如果所有对应的属性都严格相等,则测试失败,因此断言失败。但是,如果实际值和预期值之间至少有一个差异,则断言成功。

此方法有助于确保两个对象或数组不具有相同的结构和值。在运行测试以验证是否满足特定条件或是否已发生修改时,它非常有帮助。

语法

它具有以下语法:

参数

  1. Actual (any):这是正在检查的实际值。它是正在测试的代码的结果。
  2. Expected (any):用于进行比较的值。这是您认为实际值不应与其深度相等的参考值。
  3. Message (optional string):如果断言失败(即,如果 actual 与 expected 深度等价),则会显示一个可选的自定义错误消息。在调试时,它可以帮助使错误消息更易于理解和描述。

返回值

此函数返回一个对象类型的断言错误。

关键点

Node.js 中的 assert.notDeepStrictEqual() 方法有几个关键点,如下所示:

  1. 深度比较:它会比较每个嵌套级别的所有值,而不仅仅是顶层属性。因此,它会对数组和对象进行递归比较。
  2. 严格比较:在比较原始值时,它使用 === 运算符来确保类型匹配。
  3. 断言:如果确定两个值深度等价,则会触发一个 AssertionError。如果它们不相等,断言则为真,并且不会引发错误。

示例

让我们看一个示例来演示 Node.js 中的 assert.notDeepStrictEqual() 方法。

输出

 
Assertion passed: candidate1 and candidate3 are not deeply equal.
Assertion passed: complex_Obj1 and complex_Obj2 are not deeply equal.   

说明

此代码使用 Node.js 的 assert 模块中的 assert.notDeepStrictEqual() 函数来比较深度嵌套的对象。它定义了三个候选对象,并确定 candidate 1 和 candidate 2 是否不深度等价。如果它们不等价,断言将不带错误地通过,因为预期它们会有所不同。然后,它确认 candidate 1 和 candidate 3 在本质上不相等,这也通过了。最后,它比较 complex_Obj1 和 complex_Obj2,这两个更复杂的对象之间存在一些细微差别,并发现它们在本质上不相等。任何成功的比较都会记录成功消息;失败的比较会导致错误和错误消息。