在测试过程中检测Express路由处理程序拒绝的承诺

时间:2019-02-19 08:29:21

标签: node.js express jestjs supertest

当Express异步路由处理程序抛出错误(不会捕获)时,它将不会传递给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单元测试?)

0 个答案:

没有答案