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 之前,这里没有任何帮助。
包.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)
supertest
这是使用快速错误处理程序中间件的最小工作示例。
app.js
:
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\napp.test.js
:
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 归档时间: |
|
查看次数: |
1227 次 |
最近记录: |