簡體   English   中英

即使在我的快遞應用程序上運行server.close()之后,Jest也會測試掛起

[英]Jest tests hanging even after running server.close() on my express app

我有一個快速的應用程序,我需要從我的集成測試用例開始。

Express應用程序將導出到app.js文件中, 而不會偵聽任何端口 所以,我的測試用例如下:

const app = require('../src/app');

describe('Pact Verification', () => {
  const port = 3002;
  let server;

  beforeAll(done => {
    const server = http.createServer(app);
    server.listen({ port }, done)
  });

  afterAll(done => {
    server.close(done);
  });

  it(....

問題是,一旦用Jest運行測試,它就會掛起。 我必須--forceExit^C退出。

我甚至更新到Jest 23使用--detectOpenHandles但我沒有在終端看到任何輸出,它一直掛着,所以這也沒有幫助。

由於導出的app 沒有偵聽任何端口 ,並且它沒有任何數據庫連接等 ,因此問題可能不存在,可能是在我的beforeAll / afterAll塊中。 我錯過了什么?

更新1

這是我的app.js的內容

var express = require('express');
var path = require('path');
var logger = require('morgan');

var indexRouter = require('./routes/index');

var app = express();

if (process.env.NODE_ENV !== 'test') {
  app.use(logger('dev'));
}
app.use(express.json());

app.use('/api/v1/', indexRouter); // <-- these endpoints just return faker data in JSON format (https://github.com/marak/Faker.js/)

app.use((req, res, next) => {
  const err = Error('Not Found');
  err.status = 404;
  next(err);
});

app.use((err, req, res, next) => {
  const { status, message } = err;

  const stack = status !== 404 && err.stack || undefined;

  res.status(status || 500)
    .json({
      message,
      stack,
    });
});

module.exports = app;

問題是afterAll中的server undefined ,因為它在另一個作用域中被指定為const server = http.createServer(app) 相反,它應該是:

server = http.createServer(app);

應該有一個例外,所以done永遠不會得到所謂的afterAll 目前Jest會從afterAll抑制錯誤,有Jest 打開的問題可以解決afterAll bug。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM