• Node.js Video Tutorials

Node.js - assert.notDeepEqual() 函数



assert 模块提供了一组断言函数,用于验证不变式。Node.js assert.notDeepEqual() 函数是 Node.js assert 模块的内置函数。

Node.js assert.notDeepEqual() 函数 将比较传入的值是否深度相等。如果值深度相等,则函数将抛出一个包含消息参数中文本的 AssertionError。否则,如果值不相等,则不会抛出任何 AssertionError,也不会返回任何输出。

此方法与 assert.notDeepStrictEqual() 函数几乎相同,并且是 assert.deepEqual() 函数的反义。

语法

以下是 Node.js assert.notDeepEqual() 函数 的语法:

assert.notDeepEqual(actual, expected[, message]);

参数

此方法接受三个参数。具体说明如下。

  • actual − (必需) 此参数中传递的值将被评估。值可以是任何类型。

  • expected − (必需) 此参数中传递的值将与 actual 值 进行比较。值可以是任何类型。

  • message − (可选) 可以将字符串或错误类型作为输入传递到此参数中。

返回值

如果 actualexpected 匹配,则此函数将在终端返回一个 AssertionError

示例

在下面的示例中,我们将两个不同的整数值作为 actualexpected 传递给 Node.js assert.notDeepEqual() 函数,并将文本传递给 message 参数。

const assert = require('assert');
var num1 = 34;
var num2 = 45;
assert.notDeepEqual(num1, num2, "Both the numbers are NOT EQUAL");

输出

当我们编译并运行代码时,该函数不会向输出抛出 AssertionError,因为 actualexpected 不匹配。

// Returns nothing

示例

在下面的示例中,我们将两个输入传递给 Node.js assert.notDeepEqual() 函数,一个整数传递给 actual 参数,一个字符串传递给 expected 参数。

const assert = require('assert');
var string1 = '7';
var num1 = 7;
assert.notDeepEqual(string1, num1, "Both the values are EQUAL");

输出

当我们编译并运行代码时,该函数会向输出抛出 AssertionError,因为 7 == '7'

assert.js:79
   throw new AssertionError(obj);
   ^
   
AssertionError [ERR_ASSERTION]: Both the values are EQUAL
   at Object.<anonymous> (/home/cg/root/639c30a0a5fb2/main.js:6:8)
   at Module._compile (internal/modules/cjs/loader.js:702:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
   at Module.load (internal/modules/cjs/loader.js:612:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
   at Function.Module._load (internal/modules/cjs/loader.js:543:3)
   at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
   at startup (internal/bootstrap/node.js:238:19)at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)

示例

在下面的示例中,我们创建了两个具有不同属性的嵌套对象。然后,我们将这两个对象作为 actualexpected 传递给函数,并将文本传递给 message 参数。

const assert = require('assert');
var object1 = {
   Name : 'Mike',
   Id : 17,
   Salary : {
      "2020-2021" : '45000INR',
      "2021-2022" : '50000INR',
   },
   address: {
      Area: {
         address1: "White field road",
         address2: "Brown wheat field",
      },
   }
};

var object2 = {
   Name : 'Mike',
   Id : 17,
   Salary : {
      "2020-2021" : '45000INR',
      "2021-2022" : '50000INR',
   },
   address: {
      Area: {
         address1: "White field road",
         address2: "Brown wheat field",
      },
   }
};
assert.notDeepEqual(object1, object2, "Both the objects are EQUAL")

输出

当我们编译并运行上述程序时,它会抛出 AssertionError 和message 到输出,因为actualexpected 是相同的。

assert.js:79
   throw new AssertionError(obj);
   ^
   
AssertionError [ERR_ASSERTION]: Both the objects are EQUAL
   at Object.<anonymous> (/home/cg/root/639c30a0a5fb2/main.js:33:8)
   at Module._compile (internal/modules/cjs/loader.js:702:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
   at Module.load (internal/modules/cjs/loader.js:612:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
   at Function.Module._load (internal/modules/cjs/loader.js:543:3)
   at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
   at startup (internal/bootstrap/node.js:238:19)
   at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)

示例

在下面的示例中,我们创建了两个具有相似属性的嵌套对象。然后,我们将这两个对象作为 actualexpected 传递给函数,并将文本传递给 message 参数。

const assert = require('assert');
var object1 = {
   Name : 'John',
   Id : 27,
   Salary : {
      "2020-2021" : '55000INR',
      "2021-2022" : '70000INR',
   },
};

var object2 = {
   Name : 'Mike',
   Id : 17,
   Salary : {
      "2020-2021" : '45000INR',
      "2021-2022" : '50000INR',
   },
};

assert.notDeepEqual(object1, object2, "Both the objects are NOT EQUAL");

输出

因此,当我们编译并运行代码时,该函数不会向输出抛出 AssertionError,因为 actualexpected 不相同。

// Returns nothing
nodejs_assert_module.htm
广告