assert: add more information to AssertionErrors

This adds information about the actual thrown error to the
AssertionError's message property.

It also improves the logged error instances error name by using the
constructors name, if available.

PR-URL: https://github.com/nodejs/node/pull/28263
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Ruben Bridgewater
2019-06-15 13:27:21 +02:00
parent 5700cd17dd
commit 97c52ca5dc
3 changed files with 16 additions and 5 deletions

View File

@@ -620,8 +620,13 @@ function expectedException(actual, expected, message, fn) {
generatedMessage = true;
message = 'The error is expected to be an instance of ' +
`"${expected.name}". Received `;
// TODO: Special handle identical names.
if (isError(actual)) {
message += `"${actual.name}"`;
const name = actual.constructor && actual.constructor.name;
message += `"${name || actual.name}"`;
if (actual.message) {
message += `\n\nError message:\n\n${actual.message}`;
}
} else {
message += `"${inspect(actual, { depth: -1 })}"`;
}
@@ -636,6 +641,10 @@ function expectedException(actual, expected, message, fn) {
const name = expected.name ? `"${expected.name}" ` : '';
message = `The ${name}validation function is expected to return` +
` "true". Received ${inspect(res)}`;
if (isError(actual)) {
message += `\n\nCaught error:\n\n${actual}`;
}
}
throwError = true;
}