#823·supertest

为什么我得到"杰斯检测到以下1个打开的手柄 有可能阻止杰斯退出:超时"

作者: isaacgr创建于 2023年5月25日更新于 2025年3月12日

没有虫子 以防有人遇到同样的问题 我做测试时得到的输出如下:

Jest检测出以下1个开口的手柄可能使Jest无法出道:

* 超时

41 QQ 描述 ("答复", () {{}
42 QQ it ("应该为有效请求发送200个答复"), async () {{
> 43 QQ 康斯特回复 = 等待请求( app. get ()
|
44 “/api/${apiVersion}${RUTE PATHS.PARTNUMPERS}}
第45页;
46\\ // control.log( request(app).get("/")). serverAddress(app,"/"));

at Test.serverAddress (node modules/supertest/lib/test.js:48:35) 互联网档案馆的存檔,存档日期2013-12-22.
在新测试时(node modules/supertest/lib/test.js:34:14)
at Object.obj. <computered>[as get] (node modules/supertest/index.js:43:18) 互联网档案馆的存檔,存档日期2013-12-02.
测试 / 控制器/部件数. test.ts:43:40
测试 / 控制器/ 部件数. ts: 8: 71
at Object.<匿名>.  awaiter (   tests /controlers/partnuts.ts:4:12)
at Object.<anonymous> (   tests /controlers/partnuts. test.ts:42:67)

在GitHub里 我找不到任何与"时空"开关有关的东西

我追踪到这个问题的速率 限制了我制作的中间软件

comst rateLimiter = (req: request, res: response, next: Next Function) {(req: request, res: response, except: Next Function) {(req: request, rescept: responsibility, ext: Next Function) {(请求:请求, 请求, 请求, 答复, 响应, 响应, 响应, 响应, 响应, 响应, 响应, 下响应, 响应) {{
// 获取客户端的 IP 地址
c. 客户端IP = req.ip;

// 检查客户端是否超过了费率限制
如果( requestCounter.has(客户端)) {
c. 请求Made = requestCounter.get(客户端IP);
如果(请求Made 请求 PER MINUTE){
返回res.status( 429).send(“太多请求”) ;
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

// 增加该客户提出的请求数目
requestCounter.set(客户端IP, (requestCounter.get(客户端IP) QQ 0) + 1);

// 在1分钟后清除此客户端的请求数
Const request Timer = set Timeout (() {{{{{{}
请求Counter.delete(客户端IP);
清空Interval(再充电计时器); // 清空再充电计时器, 也防止测试中的未打开的手柄
* 60 * 1 000);

// 每秒重填一桶请求
Const refill Timer = set Interval (() {} { {
requestCounter.set(客户端IP,Math.max(requestCounter.get(客户端IP) - 1,0));
· 1000);

/ 调用链条中的下一个中间软件
下一个( );

/ 中间软件完成后清理定时器
清除超时( 请求计时器) ;
清除Interval( 重新填充计时器);
* ;

如果没有明确时间 ' 和明确Interval ' 电话,计时器将无限期地开始运行,即使在测试完成之后,这导致开关出错。

在增加清除这两个计时器的呼声之后,我不再体验这个问题.

内容来源: forwardemail/supertest