gpt4 book ai didi

javascript - Jest 检测到以下 2 个打开的句柄可能会阻止 Jest 退出 :

转载 作者:行者123 更新时间:2023-12-05 05:02:33 28 4
gpt4 key购买 nike

我是测试新手。我正在使用 JEST 来测试我的 nodejs API。当我在一个文件中编写所有测试时,它可以正常运行,没有任何错误,但是当我分离它时,它给我的端口已经在使用中。至于每个文件,它运行不同的节点实例。

我正在写这两个文件来测试

const supertest = require('supertest');
const app = require('../index');
describe('API Testing for APIs', () => {
it('Healthcheck endpoint', async () => {
const response = await supertest(app).get('/healthcheck');
expect(response.status).toBe(200);
expect(response.body.status).toBe('ok');
});
});

我如何将我的测试分成不同的文件以更好地组织我的测试,或者无论如何都可以组织测试文件。

PS - 请建议编写 NodeJS api 测试的最佳实践。

最佳答案

当您将 Express 与 Jest 和 Supertest 一起使用时,您需要将 Express 应用程序定义和应用程序监听分成两个不同的文件。 Supertest 不在任何端口上运行。它模拟对 Express 应用程序的 HTTP 请求响应。它将是这样的:

文件:app.js

const express = require('express');
const app = express();

app.get('/healthcheck', (req, res) => {
res.json({msg: 'Hello!'});
};

module.exports = app;

文件:index.js

const app = require('./app');
app.listen(3000);

文件:index.test.js

const request = require('supertest');
const app = require('./app');

test('Health check', async () => {
const response = await request(app)
.get('/healthcheck')
.send()
.expect(200);

expect(response.body.msg).toBe('Hello!');
};

关于javascript - Jest 检测到以下 2 个打开的句柄可能会阻止 Jest 退出 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62148115/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com