我正在努力使用 Jest 和 Supertest 以及我的 Node Express 应用程序来设置一些测试。
我还使用 Sentry 来报告我的错误。我的 app.js 文件中有以下几行代码来设置 Sentry:
app.js
Sentry.init({ environment: "development", dsn: "..." });
app.use(Sentry.Handlers.requestHandler());
...
app.use(Sentry.Handlers.errorHandler());
我有一个简单的测试,定向到主页并期望 200 状态代码。
home.test.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
我知道 Supertest 有问题,因为如果我的测试仅包含一个简单的测试,例如expect(2+2).toBe(4);
没有问题。仅当我“请求”路线时(await request.get("/").expect(200);
).
由于我正在请求该应用程序,下一个问题是添加了多个错误和响应侦听器app.use(Sentry.Handles.requestHandler());
and app.use(Sentry.Handlers.errorHandler());
。如果我删除 Sentry 初始化代码,一切都会正常工作。
我无法删除这些行,因为 Sentry 无法工作,但我不知道该怎么做。我看了又看,但找不到其他人有类似的问题。老实说,我不确定要搜索什么。我已经为此工作了好几天了,但我却不知所措。
谢谢您的帮助。