assert.deepEqual(actual, expected[, message])
Tests for deep equality between the actual
and expected
parameters. Primitive values are compared with the equal comparison operator ( ==
).
Only enumerable "own" properties are considered. The deepEqual()
implementation does not test object prototypes, attached symbols, or non-enumerable properties. This can lead to some potentially surprising results. For example, the following example does not throw an AssertionError
because the properties on the Error
object are non-enumerable:
// WARNING: This does not throw an AssertionError! assert.deepEqual(Error('a'), Error('b'));
"Deep" equality means that the enumerable "own" properties of child objects are evaluated also:
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
If the values are not equal, an AssertionError
is thrown with a message
property set equal to the value of the message
parameter. If the message
parameter is undefined, a default error message is assigned.
Please login to continue.