超测+express setup导致超时错误

Supertest + express setup cause timeout error

我在 server.test.js

上进行了简单设置
import 'regenerator-runtime/runtime';

const request = require('supertest');
const express = require("express")
const app = express();

app.get('/user', function(req, res) {
  res.status(200).json({ name: 'john' });
});

describe('GET /user', function() {
  it('responds with json', async function(done) {
    const response = await request(app)
      .get('/user')
    expect(response.status).toBe(201)
  })
})

npx jest 并接收 thrown: "Exceeded timeout of 5000 ms for a test., 增加超时无济于事 jest.config.js 到 testTimeout: 20000,它等待 20s 并且也失败了

为什么 express 应用从 superset 开始?我使用了官方 README

中的示例

尝试从测试回调中删除 done

it('responds with json', async function() {
  const response = await request(app)
    .get('/user')
  expect(response.status).toBe(201)
})

Jest 可能正在等待被调用。

通常建议您使用 async 函数或 done。如果您将它们混合使用,Jest 通常会发出警告,不知道为什么在这个设置中它不会这样做。

或者您可以尝试在测试结束时调用 done()

您应该预料到测试会失败,因为发布的状态是 200 而您正在检查 201