Node.js 在节点+;expressapi阻止Jest退出

Node.js 在节点+;expressapi阻止Jest退出,node.js,api,express,jestjs,supertest,Node.js,Api,Express,Jestjs,Supertest,我正在尝试使用Jest和Supertest测试Node+Express中制作的一个非常基本的API,但我得到以下输出警告: Jest has detected the following 1 open handle potentially keeping Jest from exiting: ● TCPSERVERWRAP > 34 | const server = app.listen(PORT, () => { |

我正在尝试使用Jest和Supertest测试Node+Express中制作的一个非常基本的API,但我得到以下输出警告:

Jest has detected the following 1 open handle potentially keeping Jest from exiting:

  ●  TCPSERVERWRAP

    > 34 | const server = app.listen(PORT, () => {
         |                    ^
      35 |     console.log(`Server is running on port ${PORT}.`);
      36 | });
      37 | 

我的服务器在服务器条目JS文件中定义如下:

const server = app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}.`);
});

module.exports = server;
我的测试文件如下所示:

describe('Users endpoint', () => {
    let server;

    beforeEach(() => { server = require('../server'); });
    afterEach((done) => { server.close(done); });

    it('should create new user if we do a POST', (done) => {
        request(server)
            .get('/api/users')
            .expect(200)
            .end(done);
    });
});
据我所知,调用
server.close()
在afterEach函数上传递done参数可以确保服务器在每次单元测试后关闭,但事实并非如此

我错过什么了吗

已找到解决方案

在除了我仅有的一个测试用例之外添加了一个新的测试用例并修改afterEach函数后,删除done参数,如下所示:

describe('Users endpoint', () => {
    let server;

    beforeEach(() => { server = require('../server'); });
    afterEach((done) => { server.close(done); });

    it('should create new user if we do a POST', (done) => {
        request(server)
            .get('/api/users')
            .expect(200)
            .end(done);
    });
});
afterEach(()=>{server.close();})


“打开句柄”警告不再显示。

我的服务器与您一样定义。但是我想在通过了所有的测试后,杀死开玩笑

如果有人想这么做

在file.test.js的顶部添加

const server = require('../app');
最后呢

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