diff --git a/lib/test.js b/lib/test.js index be62ebb..6812255 100644 --- a/lib/test.js +++ b/lib/test.js @@ -78,7 +78,7 @@ function wrapAssertFn(assertFn) { return function(res) { var badStack; var err = assertFn(res); - if (err && err.stack) { + if (err instanceof Error && err.stack) { badStack = err.stack.replace(err.message, '').split('\n').slice(1); err.stack = [err.toString()] .concat(savedStack) diff --git a/test/supertest.js b/test/supertest.js index bdeb683..5f43893 100644 --- a/test/supertest.js +++ b/test/supertest.js @@ -738,6 +738,18 @@ describe('request(app)', function () { .end(done); }); + it("doesn't create false negatives on non error objects", function (done) { + const handler = { + get: function(target, prop, receiver) { + throw Error('Should not be called for non Error objects'); + } + }; + const proxy = new Proxy({}, handler); // eslint-disable-line no-undef + get + .expect(() => proxy) + .end(done); + }); + it('handles multiple asserts', function (done) { const calls = []; get