Reputation: 73015
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?
Upvotes: 6
Views: 5168
Reputation: 6784
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?')
Upvotes: 13