sinon icon indicating copy to clipboard operation
sinon copied to clipboard

sinon not throwing the error that been thrown when the error is undefined and also fail to assert

Open rluvaton opened this issue 1 year ago • 3 comments

Describe the bug If the function throw undefined then:

  1. calling the function does not throw
  2. sinon.assert.threw(a); fail

To Reproduce ReplIt Link

const a = sinon.spy(() => {
  throw undefined;
});

try {
  a();
} catch (e) {
   // 1. this won't be logged
  console.log('Error has being thrown');
}

// 2. This will throw
// Uncaught AssertError: spy did not throw exception
sinon.assert.threw(a);

Expected behavior

  1. throw the thrown error
  2. the assertion should pass

As said in the docs about the 2nd thing:

sinon.assert.threw(spyOrSpyCall, exception);

Passes if spy threw the given exception.

The exception can be a String denoting its type, or an actual object.

If only one argument is provided, the assertion passes if spy ever threw any exception.

Context (please complete the following information):

  • Library version: 14.0.0
  • Environment: node

rluvaton avatar Sep 11 '22 21:09 rluvaton

So ... we should detect that a function has thrown, but if the exception is undefined, we should still regard it as thrown?

fatso83 avatar Sep 12 '22 13:09 fatso83

yes, as the function being thrown should not be dependable on the value that was thrown

rluvaton avatar Sep 12 '22 15:09 rluvaton

Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward?

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

stale[bot] avatar Dec 27 '23 10:12 stale[bot]