-
If a function f throws ErrorB, assert.throws(f, ErrorA) and assert.notThrows(f, ErrorA) should signify the actual (ErrorB) and expected (ErrorA) errors rather than just throwing ErrorB
-
ErrorB is also swallowed as an AssertionError, rather than its true error type. For example, if there is a TypeError inside f, the TypeError message will be thrown as an AssertionError.
const f = function() { const x = 5; x = 6; }
// what currently happens
// AssertionError: Assignment to constant variable
assert.throws(f, ErrorA);
// AssertionError: Got unwanted exception
assert.notThrows(f, ErrorA);
// what should happen
// AssertionError: you caught the wrong exception (actual: TypeError, expected: ErrorA)
assert.throws(f, ErrorA);
// AssertionError: f threw an unwanted exception (actual: TypeError, expected: ErrorA)
assert.notThrows(f, ErrorA);
If a function
fthrowsErrorB,assert.throws(f, ErrorA)andassert.notThrows(f, ErrorA)should signify the actual (ErrorB) and expected (ErrorA) errors rather than just throwingErrorBErrorBis also swallowed as anAssertionError, rather than its true error type. For example, if there is aTypeErrorinsidef, theTypeErrormessage will be thrown as anAssertionError.