-
Notifications
You must be signed in to change notification settings - Fork 21
Description
We understand you have a problem and are in a hurry, but please provide us with some info to make it much more likely for your issue to be understood, worked on and resolved quickly.
- library version : 10.0.0
- Environment : OSX
- Other libraries you are using: sinon
How to reproduce
assert.exception(
function () {
throw new TypeError('long exception message');
},
{
message: "message",
name: "rr",
}
);What did you expect to happen?
Test fails
What actually happens
Test succeeds
Reason
When samsam library detects there's no match, referee tries to verify that by iterating property-by-property and comparing again: https://github.com/sinonjs/referee/blob/main/lib/assertions/exception.js#L52
The problem is, comparing objects is different from comparing strings in samsam.
When iterating property-by-property, we don't check for string equality, rather that one string is a substring of anoter: https://github.com/sinonjs/samsam/blob/main/lib/match.js#L71-L74
This makes the check in assert.exception weaker - it succeeds if the strings in the matcher strings are just the substrings of the corresponding properties.
I would expect this behaviour to be either changed or explicitly documented.