【发布时间】:2020-11-13 07:33:38
【问题描述】:
我正在尝试使用 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 参数,如下所示:
afterEach(() => { server.close(); });
打开句柄警告不再显示。
【问题讨论】:
标签: node.js api express jestjs supertest