超级测试给出MaxListeners超过警告错误,我在Node中的Jest测试



我正在努力使用Jest和Supertest与我的Node Express应用程序设置一些测试。

我还使用哨兵来报告我的错误。我的应用程序.js文件中有以下代码行来设置 Sentry:

应用.js

Sentry.init({ environment: "development", dsn: "..." });
app.use(Sentry.Handlers.requestHandler());
...
app.use(Sentry.Handlers.errorHandler());

我有一个简单的测试,它指向主页,并期望一个 200 状态代码。

首页.测试.js

const app = require("../src/app");
const request = require("supertest")(app);
describe("homepage", () => {
it("welcomes the user", async () => {
await request.get("/").expect(200);
});
});

然后,我在控制台中运行npm run test脚本。测试顺利通过;但是,当测试运行多次(超过 10 次(时,我会收到一条错误消息。测试将通过,但我收到以下消息。

(node:84470) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [ClientRequest]. Use emitter.setMaxListeners() to increase limit
(node:84470) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 response listeners added to [ClientRequest]. Use emitter.setMaxListeners() to increase limit
(node:84470) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [ClientRequest]. Use emitter.setMaxListeners() to increase limit
(node:84470) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 response listeners added to [ClientRequest]. Use emitter.setMaxListeners() to increase limit
(node:84470) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [ClientRequest]. Use emitter.setMaxListeners() to increase limit
(node:84470) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 response listeners added to [ClientRequest]. Use emitter.setMaxListeners() to increase limit
(node:84470) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [ClientRequest]. Use emitter.setMaxListeners() to increase limit
(node:84470) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 response listeners added to [ClientRequest]. Use emitter.setMaxListeners() to increase limit
(node:84470) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [ClientRequest]. Use emitter.setMaxListeners() to increase limit
(node:84470) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 response listeners added to [ClientRequest]. Use emitter.setMaxListeners() to increase limit

我知道超级测试有问题,因为如果我的测试只包含一个简单的测试,例如expect(2+2).toBe(4);没有问题。只有当我"请求"一条路线(await request.get("/").expect(200);(。

由于我正在请求该应用程序,下一个问题是使用app.use(Sentry.Handles.requestHandler());app.use(Sentry.Handlers.errorHandler());添加了多个错误和响应侦听器。如果我删除我的哨兵初始化代码,一切正常。

我无法删除这些行,因为哨兵不起作用,但我不确定该怎么做。我看了又看,但找不到其他人有类似的问题。老实说,我不确定要搜索什么。我已经为此工作了几天,我不知所措。

感谢您的帮助。

我也有这个问题,我找到的解决方案是:

在 package.json 的测试脚本中,我将NODE_ENV环境变量设置为测试。

"scripts": {
"test": "NODE_ENV=test jest --detectOpenHandles -i",
"test:watch": "NODE_ENV=test jest --watch --coverage=false --
},

在 app.js 中,如果我们处于测试环境中,我们不会启动哨兵。这将从有条件地完成。

if (process.env.NODE_ENV !== 'test') {
Sentry.init({ environment: "development", dsn: "..." })
}

相关内容

  • 没有找到相关文章

最新更新