首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用“supertest”测试期间的Express中间件控制台输出

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

Stack Overflow用户
提问于 2017-03-09 04:04:19
回答 1查看 1.4K关注 0票数 5

在Supertest中运行时,此中间件不显示:

代码语言:javascript
运行
复制
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 });
});

我只是花了大量愚蠢的时间试图找出这个错误:

代码语言:javascript
运行
复制
Driver.findByIdAndDelete(driverId) // Remove NOT Delete
  .then(driver => {
    res.status(204).send(driver)
})
...

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

我打开了两个终端窗口,运行npm run:teststart,在运行Postman之前没有显示任何有帮助的内容。

有没有一种方法可以在运行Supertest的时候访问这个日志输出?

package.json:

代码语言:javascript
运行
复制
"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"
  }
EN

回答 1

Stack Overflow用户

发布于 2019-12-20 12:42:26

这是一个使用express错误处理中间件的supertest的最小工作示例。

app.js

代码语言:javascript
运行
复制
const express = require("express");
const app = express();

app.get("/", (req, res, next) => {
  const error = new Error("make an error");
  next(error);
});

app.use((err, req, res, next) => {
  console.log("error: ", err.message);
  res.status(422).send({ error: err.message });
});

module.exports = app;

app.test.js

代码语言:javascript
运行
复制
const app = require("./app");
const request = require("supertest");
const { expect } = require("chai");

describe("42680896", () => {
  it("should pass", (done) => {
    request(app)
      .get("/")
      .expect(422)
      .end((err, res) => {
        if (err) return done(err);
        expect(res.body).to.be.eql({ error: "make an error" });
        done();
      });
  });
});

集成测试结果:

代码语言:javascript
运行
复制
 42680896
error:  make an error
    ✓ should pass


  1 passing (31ms)

-------------|----------|----------|----------|----------|-------------------|
File         |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
-------------|----------|----------|----------|----------|-------------------|
All files    |    94.74 |       50 |      100 |      100 |                   |
 app.js      |      100 |      100 |      100 |      100 |                   |
 app.test.js |       90 |       50 |      100 |      100 |                11 |
-------------|----------|----------|----------|----------|-------------------|

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42680896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档