Обнаружение отклоненных обещаний от экспресс-обработчиков маршрутов во время тестирования - PullRequest
0 голосов
/ 19 февраля 2019

Когда обработчик экспресс-асинхронного маршрута выдает ошибку (которую он не перехватывает), она не будет передана в next(), поэтому она не попадет в промежуточное ПО для обработки ошибок.

Я хочучтобы смоделировать это в тесте:

import * as request from "supertest";

const router = express.Router();
router.route("/boom").post(async (req, res, next) => { throw new Error(); });
router.use((err, req, res, next) => { res.status(500).json("caught!"); });

const app = express();
app.use(router);

test("uncaught error"), done => {
  request(app)
    .post("/boom")
    .end((err, res) => {               // never gets here
      expect(err).toBeTruthy();
      expect(res.status).not.toBe(500);
      expect(res.body).not.toBe("caught!");
      done();
    });
});

Однако даже в тесте ошибка не обнаруживается и время ожидания истекает.Таким образом, тест не пройден.

Как я могу это обнаружить?


(КСТАТИ: супер-тест делает интеграционное тестирование ... могу ли я сделать это без супер-теста, просто блок Jestпроверить?)

...