Permalink
Browse files

assert: inspect getters

While asserting two objects the descriptor is not taken into account.
Therefore getters will be triggered as such. This makes sure they
are also highlighted in the error message instead of potentially
looking identical while the return value of the getter is actually
different.

PR-URL: #25004
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
  • Loading branch information...
BridgeAR authored and MylesBorins committed Dec 13, 2018
1 parent 5eb5d1d commit a9ab28df2c2319dcc817616e623a49379de6c409
Showing with 26 additions and 2 deletions.
  1. +3 −1 lib/internal/assert.js
  2. +23 −1 test/parallel/test-assert-deep.js
@@ -56,7 +56,9 @@ function inspectValue(val) {
breakLength: Infinity,
// Assert does not detect proxies currently.
showProxy: false,
sorted: true
sorted: true,
// Inspect getters as we also check them when comparing entries.
getters: true
}
);
}
@@ -24,7 +24,8 @@ function re(literals, ...values) {
customInspect: false,
maxArrayLength: Infinity,
breakLength: Infinity,
sorted: true
sorted: true,
getters: true
});
// Need to escape special characters.
result += str;
@@ -1049,3 +1050,24 @@ assert.throws(
});
assertDeepAndStrictEqual(a, b);
}

// Check getters.
{
const a = {
get a() { return 5; }
};
const b = {
get a() { return 6; }
};
assert.throws(
() => assert.deepStrictEqual(a, b),
{
code: 'ERR_ASSERTION',
name: 'AssertionError [ERR_ASSERTION]',
message: /a: \[Getter: 5]\n- a: \[Getter: 6]\n /
}
);

// The descriptor is not compared.
assertDeepAndStrictEqual(a, { a: 5 });
}

0 comments on commit a9ab28d

Please sign in to comment.