Node.js 在节点+;expressapi阻止Jest退出
我正在尝试使用Jest和Supertest测试Node+Express中制作的一个非常基本的API,但我得到以下输出警告: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 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));