• Node.js Video Tutorials

Node.js - assert.deepStrictEqual() 函数



Node.js assert.deepStrictEqual() 函数将对它的两个参数 actualexpected 进行深度严格相等性测试。由于此方法在比较方面存在大量差异,因此最好优先使用 assert.deepStrictEqual() 而不是 assert.deepEqual()

语法

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

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

参数

此函数接受三个参数。下面将对它们进行描述。

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

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

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

返回值

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

示例

在下面的示例中,我们创建了两个具有相同属性的对象,并且我们更改了某个特定属性的类型(在第一个对象中为整数,在第二个对象中为字符串)。然后,我们将这两个对象作为 actualexpected 传递给 Node.js assert.deepStrictEqual() 函数,并将文本传递给 message 参数。

const assert = require('assert');
var object1 = {
   Name: 'Roy',
   Age: 34,
   Nickname: 'Godsway'
};

var object2 = {
   Name: 'Roy',
   Age: '34',
   Nickname: 'Godsway'
}
assert.deepStrictEqual(object1, object2, 'Both the objects are not identical');

输出

当我们编译并运行代码时,该函数将抛出 AssertionError 以及消息到输出,因为 actual 和 expected 不相同。这是因为 34 !== '34'

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:15: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)

示例

在下面的示例中,我们创建了两个具有相同属性的对象。

const assert = require('assert');
var object1 = {
   Name: 'Roy',
   Age: 34,
   Nickname: 'Godsway'
};

var object2 = {
   Name: 'Roy',
   Age: 34,
   Nickname: 'Godsway'
}
assert.deepStrictEqual(object1, object2, 'Both the objects are identical');

输出

当我们编译并运行代码时,该函数不会将 AssertionError 抛出到输出,因为 actual 和 expected 是相同的。这是因为 34 == 34

// Returns nothing

示例

在下面的示例中,我们将一个 字符串 和一个对象传递给函数进行比较。

const assert = require('assert');

assert.deepStrictEqual(new String('Tutorialspoint'), Object('Tutorialspoint'));

输出

当我们编译并运行代码时,该函数不会将 AssertionError 抛出到输出,因为 actualexpected 是相同的。这是因为在展开后,对象和字符串是相同的。

// Returns nothing

示例

在下面的示例中,我们将 0 和 -0 传递给函数进行比较。

const assert = require('assert');

var zero = 0;
var negzero = -0
assert.deepStrictEqual(zero, negzero, 'Both are not same');

输出

当我们编译并运行代码时,该函数将抛出 AssertionError 以及 message 到输出,因为 actualexpected 不相同。这是因为 0 !== -0

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

AssertionError [ERR_ASSERTION]: Both are not same
   at Object.<anonymous> (/home/cg/root/639c16a06de3d/main.js:5: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)

示例

在下面的示例中,我们将 -0 和 -0 传递给函数进行比较。

const assert = require('assert');

var neggzero = -0;
var negzero = -0
assert.deepStrictEqual(neggzero, negzero, 'Both are same');

输出

当我们编译并运行代码时,该函数不会将 AssertionError 抛出到输出,因为 actualexpected 是相同的。这是因为 -0 == -0

// Returns nothing

示例

在下面的示例中,我们将 5 和 6 传递给函数进行比较。但是我们没有将任何文本传递到 message 参数中。因此,该函数将分配一个默认错误消息。

const assert = require('assert');

assert.deepStrictEqual(5, 6);

输出

当我们编译并运行代码时,该函数将抛出 AssertionError 以及该函数分配给输出的 默认错误消息,因为 actualexpected 不相同。

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

AssertionError [ERR_ASSERTION]: Input A expected to strictly deep-equal input B:
+ expected - actual

- 5
+ 6
   at Object.<anonymous> (/home/cg/root/639c3b5c17b34/main.js:3: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)
nodejs_assert_module.htm
广告