Skip to content

Commit

Permalink
Added toJSON to decorated Axios errors to faciliate serialization (#1625
Browse files Browse the repository at this point in the history
)
  • Loading branch information
TimJohns authored and emilyemorehouse committed Aug 7, 2018
1 parent b4c5d35 commit 6b44e80
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
18 changes: 18 additions & 0 deletions lib/core/enhanceError.js
Expand Up @@ -17,5 +17,23 @@ module.exports = function enhanceError(error, config, code, request, response) {
}
error.request = request;
error.response = response;
error.toJSON = function() {
return {
// Standard
message: this.message,
name: this.name,
// Microsoft
description: this.description,
number: this.number,
// Mozilla
fileName: this.fileName,
lineNumber: this.lineNumber,
columnNumber: this.columnNumber,
stack: this.stack,
// Axios
config: this.config,
code: this.code
};
};
return error;
};
13 changes: 13 additions & 0 deletions test/specs/core/createError.spec.js
Expand Up @@ -12,4 +12,17 @@ describe('core::createError', function() {
expect(error.request).toBe(request);
expect(error.response).toBe(response);
});
it('should create an Error that can be serialized to JSON', function() {
// Attempting to serialize request and response results in
// TypeError: Converting circular structure to JSON
var request = { path: '/foo' };
var response = { status: 200, data: { foo: 'bar' } };
var error = createError('Boom!', { foo: 'bar' }, 'ESOMETHING', request, response);
var json = error.toJSON();
expect(json.message).toBe('Boom!');
expect(json.config).toEqual({ foo: 'bar' });
expect(json.code).toBe('ESOMETHING');
expect(json.request).toBe(undefined);
expect(json.response).toBe(undefined);
});
});

0 comments on commit 6b44e80

Please sign in to comment.