mirror of
https://github.com/nodejs/node.git
synced 2025-05-02 22:31:35 +00:00

This switches the assert.throws output to the one used in strict mode if a error object is used for comparison. From now on it will show the complete difference between two objects instead of only showing the first failing property. It also fixes detecting properties with a undefined value and fails in case the thrown error does not contain the value at all. PR-URL: https://github.com/nodejs/node/pull/19463 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
|
|
common.expectWarning(
|
|
'DeprecationWarning',
|
|
'assert.fail() with more than one argument is deprecated. ' +
|
|
'Please use assert.strictEqual() instead or only pass a message.'
|
|
);
|
|
|
|
// Two args only, operator defaults to '!='
|
|
assert.throws(() => {
|
|
assert.fail('first', 'second');
|
|
}, {
|
|
code: 'ERR_ASSERTION',
|
|
name: 'AssertionError [ERR_ASSERTION]',
|
|
message: '\'first\' != \'second\'',
|
|
operator: '!=',
|
|
actual: 'first',
|
|
expected: 'second'
|
|
});
|
|
|
|
// Three args
|
|
assert.throws(() => {
|
|
assert.fail('ignored', 'ignored', 'another custom message');
|
|
}, {
|
|
code: 'ERR_ASSERTION',
|
|
name: 'AssertionError [ERR_ASSERTION]',
|
|
message: 'another custom message',
|
|
operator: undefined,
|
|
actual: 'ignored',
|
|
expected: 'ignored'
|
|
});
|
|
|
|
// Three args with custom Error
|
|
assert.throws(() => {
|
|
assert.fail(typeof 1, 'object', new TypeError('another custom message'));
|
|
}, {
|
|
name: 'TypeError',
|
|
message: 'another custom message'
|
|
});
|
|
|
|
// No third arg (but a fourth arg)
|
|
assert.throws(() => {
|
|
assert.fail('first', 'second', undefined, 'operator');
|
|
}, {
|
|
code: 'ERR_ASSERTION',
|
|
name: 'AssertionError [ERR_ASSERTION]',
|
|
message: '\'first\' operator \'second\'',
|
|
operator: 'operator',
|
|
actual: 'first',
|
|
expected: 'second'
|
|
});
|
|
|
|
// The stackFrameFunction should exclude the foo frame
|
|
assert.throws(
|
|
function foo() { assert.fail('first', 'second', 'message', '!==', foo); },
|
|
(err) => !/^\s*at\sfoo\b/m.test(err.stack)
|
|
);
|