I've got an error thrown like so:
if (somethingBadHappened) {
throw new Error('what were you thinking, batman?')
}
Now I want to write a test to check that this throws when expected:
should(MyClass.methodThatShouldThrow()).throws('what were you thinking, batman?')
But that actually throws the error. What am I doing wrong? Should.js docs are pretty light, since it inherits from assert.throws
, but even the docs for that doesn't work in the 'should.js' way?
As you had found out, your code execute the function which throws the error & should
doesn't get a chance to catch it.
To allow proper assertion, you need to wrap the function call in an anonymous function.
should(function () {MyClass.methodThatShouldThrow();} ).throw('what were you thinking, batman?')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With