tachybase_todo/packages/server/src/__tests__/error-handle.test.ts
ChengLei Shao 86065fa208
feat: error handle middleware ()
* feat: error handle middleware

* feat: application error handler

* feat: handle with sequelizeValidationError

* fix: test

* fix: test
2022-03-02 12:50:15 +08:00

49 lines
1.1 KiB
TypeScript

import { mockServer } from '@nocobase/test';
describe('error handle', () => {
it('should handle error with default handler', async () => {
const app = mockServer();
app.use(async () => {
throw new Error('some thing went wrong');
});
const response = await app.agent().post('/');
expect(response.statusCode).toEqual(500);
expect(response.body.errors[0].message).toEqual('some thing went wrong');
});
it('should handle error by custom handler', async () => {
class CustomError extends Error {
constructor(message, errors) {
super(message);
this.name = 'CustomError';
}
}
const app = mockServer();
app.errorHandler.register(
(err) => {
return err.name == 'CustomError';
},
(err, ctx) => {
ctx.body = {
message: 'hello',
};
ctx.status = 422;
},
);
app.use(async () => {
throw new CustomError('some thing went wrong', []);
});
const response = await app.agent().post('/');
expect(response.statusCode).toEqual(422);
expect(response.body).toEqual({ message: 'hello' });
});
});