referee
referee copied to clipboard
Does not handle objects without prototype
- library version : 3.2.0
- Environment : Node
What did you expect to happen? That it would print a normal assertion error
What actually happens It fails with
TypeError: Cannot convert object to primitive value
at String (<anonymous>)
at /tmp/test1/node_modules/@sinonjs/referee/lib/interpolate-pos-arg.js:12:44
at Array.reduce (<anonymous>)
at interpolatePosArg (/tmp/test1/node_modules/@sinonjs/referee/lib/interpolate-pos-arg.js:9:12)
at Object.fail (/tmp/test1/node_modules/@sinonjs/referee/lib/define-assertion.js:30:27)
at assertion (/tmp/test1/node_modules/@sinonjs/referee/lib/define-assertion.js:68:17)
at Function.referee.<computed>.<computed> [as isUndefined] (/tmp/test1/node_modules/@sinonjs/referee/lib/define-assertion.js:93:26)
at Object.<anonymous> (/tmp/test1/mytest.js:4:8)
How to reproduce
$ cat > mytest.js << EOF
var referee = require("@sinonjs/referee");
var assert = referee.assert;
assert.isUndefined(Object.create(null));
EOF
node mytest.js
A way to fix this is for interpolate
to check if the object has a toString
method and default to using JSON.stringify(value)
.
Alternatively, we could prepare values with Object.prototype.toString.call(value)
.