热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jest使用Express应用程序检测打开的句柄

如何解决《Jest使用Express应用程序检测打开的句柄》经验,是哪儿的问题?

我一直试图解决这个问题,但没有运气.在使用MongoDB数据库执行简单的集成测试时,我最初遇到了这个问题,但是我已经将代码剥离下来,并尽可能地简化了代码.我唯一运行的是一个测试文件:

// blah.test.js
const express = require('express');
const app = express();

describe('test block', () => {
    let server = null;

    beforeEach(() => {
        server = app.listen(3000, () => console.log('Listening on port 3000'));
    });

    afterEach(async () => {
        await server.close();
    });

    it('should pass the test', () => {
        expect(1).toBe(1);
    });
});

测试通过了,但是Jest告诉我一个打开的手柄可能会阻止它退出:

在此输入图像描述

在这种情况下,它确实退出了,但仍然注意到一个打开的句柄.我想知道如何安全地关闭它,而不是强迫退出.通过以前的测试,我会得到相同的打开句柄警告,但也会出现错误,指出Jest在完成测试后没有退出一秒钟.

我使用也试过beforeAll()afterAll(),而不是beforeEach()afterEach(),但仍然得到了同样的问题.我知道测试在这种情况下不需要服务器,但我试图尽可能简单地尝试找到打开和关闭服务器的问题.

更新:我注意到,只要添加第二个测试文件,它似乎工作正常:

// blah2.test.js
const express = require('express');
const app = express();

describe('test block', () => {
    let server = null;

    beforeEach(() => {
        server = app.listen(3000, () => console.log('Listening on port 3000'));
    });

    afterEach(async () => {
        await server.close();
    });

    it('should pass the test', () => {
        expect(2).toBe(2);
    });
});

没有运行两个测试的打开句柄

如果有人可以分享关于为什么会发生这种情况的任何想法,那将非常感激.

我在用:

快递:4.16.3

开玩笑:23.5.0

NPM:6.3.0


推荐阅读
author-avatar
每天还贷的飞鱼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有