|
1 | | -import express, { RequestHandler } from "express"; |
| 1 | +import express, { ErrorRequestHandler, RequestHandler } from "express"; |
2 | 2 | import request from "supertest"; |
3 | 3 |
|
4 | 4 | import { createLazyRouter } from "../src/express-lazy-router"; |
@@ -65,6 +65,37 @@ describe("express-lazy-router", function () { |
65 | 65 | requestTracker.verify(); |
66 | 66 | }); |
67 | 67 | }); |
| 68 | + it("should work with default(last) error handing ", async () => { |
| 69 | + const app = express(); |
| 70 | + const expectedError = new Error("ERROR IN REQUEST HANDLER"); |
| 71 | + const requestTracker = new assert.CallTracker(); |
| 72 | + const defaultErrorTracker = new assert.CallTracker(); |
| 73 | + const shouldBeCalled = defaultErrorTracker.calls(() => {}, 1); |
| 74 | + const requestHandler: RequestHandler = requestTracker.calls((_, _res, next) => { |
| 75 | + next(expectedError); |
| 76 | + }, 1); |
| 77 | + app.use( |
| 78 | + "/test", |
| 79 | + lazyLoad(async () => createMockRouter(requestHandler)) |
| 80 | + ); |
| 81 | + app.use(((err, _req, res, _next) => { |
| 82 | + shouldBeCalled(); |
| 83 | + assert.strictEqual(err.message, expectedError.message); |
| 84 | + res.status(400).json({ |
| 85 | + ok: false |
| 86 | + }); |
| 87 | + }) as ErrorRequestHandler); |
| 88 | + return request(app) |
| 89 | + .get("/test") |
| 90 | + .set("Accept", "application/json") |
| 91 | + .expect("Content-Type", /json/) |
| 92 | + .expect(400) |
| 93 | + .then((res) => { |
| 94 | + assert.deepStrictEqual(res.body, { ok: false }); |
| 95 | + requestTracker.verify(); |
| 96 | + defaultErrorTracker.verify(); |
| 97 | + }); |
| 98 | + }); |
68 | 99 | it("should lazy load router when receive request", () => { |
69 | 100 | const app = express(); |
70 | 101 | const requestTracker = new assert.CallTracker(); |
|
0 commit comments