Jest挂在Supertest的POST上,不执行“ posttest”脚本

时间:2019-09-11 22:30:19

标签: node.js express jestjs supertest

我在Express和Supertest的Jest问题上只有一个创建用户的测试。如果数据库是干净的,则可以正常工作,但控制台将显示以下内容:

enter image description here

这使得posttest撤消了所有迁移,而不执行。

完整的警告消息是:

  

测试运行一秒钟后,Jest没有退出。

     

这通常意味着您的测试中没有停止异步操作。考虑使用--detectOpenHandles运行Jest来解决此问题。

我尝试使用done(),但是不仅挂起问题仍然存在,而且没有显示问题所在,就像没有done()一样。即使是简单的总和断言也会使Jest挂死。

我没有什么可展示的,这是一个简单的测试,但有很多麻烦。也许您需要更多信息,this is the repository

1 个答案:

答案 0 :(得分:0)

这是一个最小的工作示例:

app.js

import express, { Router } from 'express';

class App {
  constructor() {
    this.server = express();

    this.middlewares();
    this.routes();
    this.exceptions();
  }

  middlewares() {
    this.server.use(express.json());
  }

  routes() {
    const routes = new Router();
    routes.post('/api/users', (req, res) => {
      res.status(201).json({ user: {} });
    });
    this.server.use(routes);
  }

  exceptions() {
    this.server.use(async (err, req, res, next) => {
      return res.status(500).send(err);
    });
  }
}

export default new App().server;

app.test.js

import app from './app';
import request from 'supertest';

describe('User', () => {
  it('Should create a new user', async () => {
    const response = await request(app)
      .post('/api/users')
      .send({
        first_name: 'Lorem',
        last_name: 'Ipsum',
        email: 'lorem@ipsum.com',
        password: '12345678',
      });

    expect(response.status).toBe(201);
    expect(response.body).toHaveProperty('user');
  });
});

具有覆盖率报告的功能测试结果:

☁  jest-codelab [master] ⚡  npx jest --coverage --verbose /Users/ldu020/workspace/github.com/mrdulin/jest-codelab/src/stackoverflow/57897576/app.test.js
 PASS  src/stackoverflow/57897576/app.test.js
  User
    ✓ Should create a new user (40ms)

----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |       90 |      100 |       75 |    94.44 |                   |
 app.js   |       90 |      100 |       75 |    94.44 |                26 |
----------|----------|----------|----------|----------|-------------------|
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        4.617s

源代码:https://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/57897576