assert.deepEqual()
Posted lalalagq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了assert.deepEqual()相关的知识,希望对你有一定的参考价值。
assert.deepEqual(actual, expected[, message])
深度比较 actual 和 expected 参数,使用比较运算符(==)比较原始值。
只考虑可枚举的“自身”属性。deepEqual() 的实现不测试对象的原型,连接符号,或不可枚举的属性。这会导致一些潜在的出人意料的结果。例如,下面的例子不会抛出 AssertionError,因为 Error 对象的属性是不可枚举:
// WARNING: This does not throw an AssertionError!
assert.deepEqual(Error('a'), Error('b'));
深度比较意味着子对象的可枚举“自身”的属性也会进行评估:
const assert = require('assert');
const obj1 = {
a: {
b: 1
}
};
const obj2 = {
a: {
b: 2
}
};
const obj3 = {
a: {
b: 1
}
}
const obj4 = Object.create(obj1);
assert.deepEqual(obj1, obj1);
// OK, object is equal to itself
assert.deepEqual(obj1, obj2);
// AssertionError: { a: { b: 1 } } deepEqual { a: { b: 2 } }
// values of b are different
assert.deepEqual(obj1, obj3);
// OK, objects are equal
assert.deepEqual(obj1, obj4);
// AssertionError: { a: { b: 1 } } deepEqual {}
// Prototypes are ignored
如果这两个值不相等,将会抛出一个带有 message 属性(等于该 message 参数的值)的 AssertionError。如果 message 参数为 undefined,将会分配一个默认的错误消息。
以上是关于assert.deepEqual()的主要内容,如果未能解决你的问题,请参考以下文章
用 Mocha 进行 Javascript 测试中 assert.equal 和 assert.deepEqual 的区别?