我正在使用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状态码。
主页.测试.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());
和 app.use(Sentry.Handlers.errorHandler());
. 如果我删除我的Sentry初始化代码,一切都能正常工作。
我不能删除这几行,因为Sentry无法工作,但我不知道该怎么办。我找了又找,但找不到其他有类似问题的人。说实话,我也不知道该怎么搜。几天了,我也是一筹莫展。
谢谢大家的帮助。