Skip to content

Commit e064b5a

Browse files
authoredOct 3, 2022
Merge pull request #767 from alexandre-abrioux/expect-stacktrace
fix: add stacktrace to failed expect function call
2 parents ba4b43b + 3dba4e9 commit e064b5a

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed
 

Diff for: ‎lib/test.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,12 @@ function wrapAssertFn(assertFn) {
303303

304304
return function(res) {
305305
let badStack;
306-
const err = assertFn(res);
306+
let err;
307+
try {
308+
err = assertFn(res);
309+
} catch (e) {
310+
err = e;
311+
}
307312
if (err instanceof Error && err.stack) {
308313
badStack = err.stack.replace(err.message, '').split('\n').slice(1);
309314
err.stack = [err.toString()]

Diff for: ‎test/supertest.js

+3-6
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const bodyParser = require('body-parser');
99
const cookieParser = require('cookie-parser');
1010
const nock = require('nock');
1111
const request = require('../index.js');
12+
const throwError = require('./throwError');
1213

1314
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
1415

@@ -750,9 +751,7 @@ describe('request(app)', function () {
750751

751752
it('reports errors', function (done) {
752753
get
753-
.expect(function (res) {
754-
throw new Error('failed');
755-
})
754+
.expect(throwError('failed'))
756755
.end(function (err) {
757756
err.message.should.equal('failed');
758757
shouldIncludeStackWithThisFile(err);
@@ -776,9 +775,7 @@ describe('request(app)', function () {
776775

777776
it('ensures truthy errors returned from asserts are throw to end', function (done) {
778777
get
779-
.expect(function (res) {
780-
return new Error('some descriptive error');
781-
})
778+
.expect(throwError('some descriptive error'))
782779
.end(function (err) {
783780
err.message.should.equal('some descriptive error');
784781
shouldIncludeStackWithThisFile(err);

Diff for: ‎test/throwError.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
'use strict';
2+
3+
/**
4+
* This method needs to reside in its own module in order to properly test stack trace handling.
5+
*/
6+
module.exports = function throwError(message) {
7+
return function() {
8+
throw new Error(message);
9+
};
10+
};

0 commit comments

Comments
 (0)
Please sign in to comment.