使用“supertest”进行测试期间的 Express 中间件控制台输出

Mic*_*uce 5 mocha.js node.js express supertest

这个中间件在 Supertest 中运行时没有出现:

app.use((err, req, res, next) => {
  // WHY DOES Supertest NOT SHOW THIS ERROR??
  console.log("error: ", err.message);
  res.status(422).send({ error: err.message });
});
Run Code Online (Sandbox Code Playgroud)

我只是花了一些愚蠢的时间试图找到这个错误:

Driver.findByIdAndDelete(driverId) // Remove NOT Delete
  .then(driver => {
    res.status(204).send(driver)
})
...
Run Code Online (Sandbox Code Playgroud)

在使用 Postman 时,中间件正确地将错误显示为对正文的响应,但在运行测试时却没有。

我打开了 2 个终端窗口,运行 npm run:test并且start在运行 Postman 之前,这里没有任何帮助。

即使在运行 Supertest 时,有没有办法访问此日志输出?

包.json:

"dependencies": {
    "body-parser": "^1.17.1",
    "express": "^4.15.2",
    "mocha": "^3.2.0",
    "mongoose": "^4.8.6"
  },
  "devDependencies": {
    "nodemon": "^1.11.0",
    "supertest": "^3.0.0"
  }
Run Code Online (Sandbox Code Playgroud)

sli*_*wp2 0

supertest这是使用快速错误处理程序中间件的最小工作示例。

\n\n

app.js:

\n\n
const express = require("express");\nconst app = express();\n\napp.get("/", (req, res, next) => {\n  const error = new Error("make an error");\n  next(error);\n});\n\napp.use((err, req, res, next) => {\n  console.log("error: ", err.message);\n  res.status(422).send({ error: err.message });\n});\n\nmodule.exports = app;\n
Run Code Online (Sandbox Code Playgroud)\n\n

app.test.js:

\n\n
const app = require("./app");\nconst request = require("supertest");\nconst { expect } = require("chai");\n\ndescribe("42680896", () => {\n  it("should pass", (done) => {\n    request(app)\n      .get("/")\n      .expect(422)\n      .end((err, res) => {\n        if (err) return done(err);\n        expect(res.body).to.be.eql({ error: "make an error" });\n        done();\n      });\n  });\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

集成测试结果:

\n\n
 42680896\nerror:  make an error\n    \xe2\x9c\x93 should pass\n\n\n  1 passing (31ms)\n\n-------------|----------|----------|----------|----------|-------------------|\nFile         |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |\n-------------|----------|----------|----------|----------|-------------------|\nAll files    |    94.74 |       50 |      100 |      100 |                   |\n app.js      |      100 |      100 |      100 |      100 |                   |\n app.test.js |       90 |       50 |      100 |      100 |                11 |\n-------------|----------|----------|----------|----------|-------------------|\n
Run Code Online (Sandbox Code Playgroud)\n\n

源代码:https ://github.com/mrdulin/mocha-chai-sinon-codelab/tree/master/src/stackoverflow/42680896

\n