axios-error
Version:
Axios error wrapper that aim to provide clear error message to developers
86 lines (65 loc) • 2.28 kB
text/typescript
import util from 'util';
import MockAdapter from 'axios-mock-adapter';
import axios from 'axios';
import AxiosError from '..';
const mock = new MockAdapter(axios);
mock.onAny().reply(400, {
error_status: 'boom....',
});
const stack = `Error: boom....
at Object.<anonymous> (/Users/xxx/messaging-apis/packages/axios-error/src/__tests__/index.spec.js:16:19)
at Generator.throw (<anonymous>)
at step (/Users/xxx/messaging-apis/packages/axios-error/src/__tests__/index.spec.js:4:336)
at /Users/xxx/messaging-apis/packages/axios-error/src/__tests__/index.spec.js:4:535
at <anonymous>
`;
it('should work', async () => {
try {
await axios.post('/', { x: 1 });
} catch (err) {
// overwrite because axios-mock-adapter set it to undefined
err.response.statusText = 'Bad Request';
const error = new AxiosError(err.response.data.error_status, err);
// overwrite stack to test it
error.stack = stack;
expect(error[util.inspect.custom]()).toMatchSnapshot();
expect(error.name).toBe('AxiosError');
}
});
it('should set `.status` property', async () => {
try {
await axios.post('/', { x: 1 });
} catch (err) {
// overwrite because axios-mock-adapter set it to undefined
err.response.statusText = 'Bad Request';
const error = new AxiosError(err);
expect(error.status).toBe(400);
}
});
it('should work with construct using error instance only', async () => {
try {
await axios.post('/', { x: 1 });
} catch (err) {
// overwrite because axios-mock-adapter set it to undefined
err.response.statusText = 'Bad Request';
const error = new AxiosError(err);
// overwrite stack to test it
error.stack = stack;
expect(error[util.inspect.custom]()).toMatchSnapshot();
expect(error.name).toBe('AxiosError');
}
});
it('should work with undefined response', async () => {
try {
await axios.post('/', { x: 1 });
} catch (err) {
// overwrite to undefined
// https://github.com/Yoctol/bottender/issues/246
err.response = undefined;
const error = new AxiosError('read ECONNRESET', err);
// overwrite stack to test it
error.stack = stack;
expect(error[util.inspect.custom]()).toMatchSnapshot();
expect(error.name).toBe('AxiosError');
}
});