• Node.js Video Tutorials

Node.js - assert.deepEqual() 函数



NodeJS assert.deepEqual() 函数将测试其两个参数actualexpected的深度相等性。当两个参数相同时,函数不会抛出AssertionError。如果两个参数不相等,则会向输出抛出AssertionError。此函数是assert.deepStrictEqual()函数的别名。

Node.js assert.deepEqual() 函数是 Node.js assert 模块的内置函数。

语法

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

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

参数

此函数接受三个参数。具体描述如下。

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

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

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

返回值

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

示例

在下面的示例中,我们执行两个数字的加法和乘法并将结果存储起来。然后,我们将这两个结果作为actualexpected传递给 Node.js assert.deepEqual() 函数,并将文本传递给message参数。

const assert = require('assert');
var x = 10, y = 5, z = 6;
var add = x + z;
var mul = y * x;
assert.deepEqual(add, mul, 'Both the values are not similar');

输出

当我们编译并运行代码时,由于actualexpected不匹配,该函数将连同message一起将AssertionError输出。

assert.js:79
  throw new AssertionError(obj);
  ^

AssertionError [ERR_ASSERTION]: Both the values are not similar
   at Object.<anonymous> (/home/cg/root/639c16a06de3d/main.js:7: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传递给 Node.js assert.deepEqual() 函数,并将文本传递给message参数。

const assert = require('assert');
var obj1 = {'name': 'Jay', 'age': 21};
var obj2 = {'name': 'Vikram', 'age': 51};
assert.deepEqual(obj1, obj2, 'Both the objects are not identical');

输出

当我们编译并运行代码时,由于两个actualexpected并不完全相同,该函数将连同message一起将AssertionError输出。

assert.js:79
   throw new AssertionError(obj);
  ^

AssertionError [ERR_ASSERTION]: Both the objects are not identical
   at Object.<anonymous> (/home/cg/root/639c16a06de3d/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传递给 Node.js assert.deepEqual() 函数,并将文本传递给message参数。

const assert = require('assert');
var array1 = [1, 2, 3, 4, 5];
var array2 = [1, 2, 3, 4, 5];
assert.deepEqual(array1, array2, 'Both the arrays identical');

输出

当我们编译并运行代码时,由于actualexpected完全相同,该函数不会向输出抛出任何AssertionError。相反,函数不会向输出返回任何内容。

// Returns nothing
nodejs_assert_module.htm
广告