Supertest 在 Node 中进行 Jest 测试时给出 MaxListenersExceedingWarning 错误

2024-03-15

我正在努力使用 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 无法工作,但我不知道该怎么做。我看了又看,但找不到其他人有类似的问题。老实说,我不确定要搜索什么。我已经为此工作了好几天了,但我却不知所措。

谢谢您的帮助。


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

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

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

在app.js中,如果我们在测试环境中,我们不会启动Sentry。这将通过条件来完成。

if (process.env.NODE_ENV !== 'test') {
  Sentry.init({ environment: "development", dsn: "..." })
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Supertest 在 Node 中进行 Jest 测试时给出 MaxListenersExceedingWarning 错误 的相关文章

  • 如何将 Observables 数组与 RxJS 6.x 和 Node.js 合并?

    出于学习目的 我正在创建一个 Node 应用程序 该应用程序需要从数组中获取 x RxJS 可观察值并将其组合成单个事件流 我想知道事件何时以任何可观察的方式 以任何顺序发生 不是以任何顺序或完全完成 我觉得它应该在一个合并的事件流中 基本
  • node.js 模块/导出系统:是否可以将模块导出为函数

    我想在 Dispatch js 中做这样的事情 function handle msg exports handle 这在调用index js中 var dispatch require Dispatch dispatch data 有任何
  • 使用express.js动态加载路线

    我使用express js作为网络服务器 并且想要一种简单的方法来将所有 app get 和 app post 函数分开以分隔文件 例如 如果我想为登录页面指定 get 和 post 函数 我希望在动态加载的路由文件夹中有一个 login
  • Node.js 如何读取一个文件,然后使用两个单独的函数写入同一个文件?

    我想要做的是读取文件 然后在写入文件时能够使用该信息执行其他操作 例如 读取文件 写入文件并同时执行MD5哈希 数字签名等 我可以使用 fs readfile 和 fs writefile 作为一项操作 只需将文件从 Web 服务器复制到我
  • 如何使用 Jade 迭代数组创建 html 表

    我从 Node ExpressJS 框架开始 遇到了这个我无法解决的问题 我正在尝试显示一个包含一些博客文章的表格 是的 一个博客 但我没有完成 这是 Jade 模板代码 div table thead tr th Posts tbody
  • 使用 NUnit 或 XUnit 时如何将参数传递给 dotnet test 命令

    我正在使用 C 和 NET Core Selenium 和 NUnit 开发一些端到端测试 现在我想写一个登录测试用例 我的测试是从控制台开始的 只需使用dotnet test命令 我只想将用户名和密码传递给此命令并在我的测试中获取它们 我
  • require('babel/register') 不起作用

    我在客户端上有一个用 ES6 编写的同构应用程序Babel 转译器 http babeljs io 我希望我的 Express 服务器具有与客户端代码相同的 ES6 语法 很遗憾require babel register 不起作用 服务器
  • Cucumber 是否不需要编写单元测试?

    我对 Ruby ROR 可用的测试框架数量之多感到有点困惑 我最近看了黄瓜轨道广播 http railscasts com episodes search cucumber并发现它们非常有趣 所以我开始玩游戏 然后努力从概念上考虑在哪里进行
  • mocha.opts 已弃用,如何迁移到 package.json?

    我正在开发一个大型项目 自从上周我更新了摩卡以来 现在我们收到警告 DeprecationWarning 通过 mocha opts 进行的配置已被弃用并且 将从 Mocha 的未来版本中删除 使用 RC 文件或 改为 package js
  • 如何对参数列表中的每个项目运行 pytest 测试

    假设我有一个 HTTP URL 列表 例如 endpoints e 1 e 2 e n 我想跑n测试 每个端点一个 我怎样才能做到这一点 一次测试所有端点的简单方法是 def test urls for e in endpoints r g
  • 如何停止 PythonShell

    如何终止 停止 Node js 中 PythonShell 执行的 Python 脚本的执行 我在交互模式下运行 输出通过 socket io 发送到给定的房间 如果没有更多的客户端连接到这个房间 我想停止 python 脚本的执行 这是我
  • 使用 Node.js 访问用 C++ 编写的 SDK

    我有一个用 C 语言编写的 SDK 可以与我的扫描仪设备进行通信 我需要开发一个可以访问扫描仪设备的电子应用程序 我知道有很多库可用于扫描仪 但我想使用这个 SDK 因为它允许我访问设备的完整功能 而且它是由设备制造商提供的 那么 有没有什
  • Node.js 上的 Connect 出现“无法 GET /”

    我正在尝试使用以下方式开始提供一些静态网页connect像这样 var connect require connect var nowjs require now var io require socket io var app conne
  • sails.js 水线嵌套填充查询

    我有一个返回对象的多个结果的查找查询 该对象包含一个包含另一个模型的模型 问题是水线不支持嵌套填充 因此它填充第一个模型 但不填充它的内部模型 我见过的所有示例都是针对 findOne 查询的 我正在寻找一种方法来解决返回多个结果的查找查询
  • MongoDB insertMany 并跳过重复项

    我试图insertMany https docs mongodb com manual reference method db collection insertMany 项目进入我的 Mongo 数据库 但我想跳过重复的 ID 我在用着N
  • 如何向 node-http-proxy 响应添加标头

    我需要在第三方服务上解决CORS 所以我想构建一个代理来添加标头 Access Control Allow Origin 为什么这段代码没有添加标题 httpProxy require http proxy var URL https th
  • “brew升级节点”后“node -v”显示错误版本

    我升级了 Node js 版本brew upgrade node其中安装了v5 3 0 但是当我得到节点的版本时node v它显示 v0 10 29 I tried brew link overwrite node但这没有用 Brew 已链
  • NodeJS 无法加载 css 文件

    所以我正在尝试制作一个 NodeJS 服务器 并且我尝试保留尽可能少的附加组件 但是 我遇到了一个问题 我似乎无法加载任何内容CSS我调用的文件HTML文件 该调用似乎确实由服务器处理 但它不会显示在浏览器中 My 网络服务器 js fil
  • 如何执行密集的 Node.js 计算

    我正在开发一个电子商务应用程序 每次产品从服务器发送到客户端时都必须重新计算产品的定价 每次发送多达数千个产品 计算部分本身相当密集 因为它需要多个数据库查询来计算 我的简单解决方案是将计算部分抽象到另一个专门用于计算的 Node js 应
  • 有没有办法在 TypeScript 2+ 中全局添加类型定义?

    我有一堆简单的 ts files 不是项目 即独立的 ts 脚本 他们使用一些 Node js 功能 TypeScript 和节点类型定义通过安装 npm install g typescript npm install g types n

随机推荐

  • 按 EditText 时的 TimePicker 对话框

    这个问题以前曾被问过 但当时的答案似乎不再适用于 Android Studio 或者我错过了一些东西 我希望当您按下编辑文本区域时显示一个 timePicker 对话框 以在 editText 中设置时间 然而 由于某种原因 普通键盘在按下
  • 使用自动热键捕获右键单击+左键单击;意外的行为

    我想捕获关键事件 按下鼠标右键 然后按下鼠标左键 自动热键没有问题 然而 我仍然无法让鼠标右键单独工作 1 这有效 RButton LButton Send X Return 按预期工作 如果我按下鼠标右键 然后按下鼠标左键 X 将发送到活
  • HTML5 语法验证

    我正在验证一些 HTML 并注意到一些我不熟悉的新错误 这些列表项会根据用户输入使用 JavaScript 进行填充 Element li缺少以下一项或多项属性 aria checked aria expanded aria valuema
  • R 中最快的列排序

    我有一个数据框full我想从中取出最后一列和一列v 然后我想对两列进行排序v以尽可能最快的方式 full从 csv 中读取 但这可以用于测试 包括一些真实性的 NA n lt 200000 full lt data frame A runi
  • 基本 CSS 功能在 IE8 中不起作用

    我在这里完全不知所措 我正在开发一个网站 需要支持大量使用 IE8 的用户 一切都可以在 IE9 及更高版本以及 Chrome Firefox 和 Safari 中运行 但我一生都无法获得基本的 CSS 例如高度属性 来在 IE8 中一致工
  • 如何创建从左下角到右上角的动态对角线?

    我创建了一个简单的布局 其中有三个可以交互的 div 一个是屏幕中间的徽标 另一个是使用 jQuery 将两个块移出屏幕 我用的是skewCSS 中应用度数转换的选项 我想根据屏幕应用一定的程度 因此该程度将正确应用于所有屏幕 视觉示例 h
  • 如何使用TabNavigator的tabBarComponent?标签栏不显示

    我正在尝试制作自己的自定义选项卡栏 似乎 tabBarComponent 是通过设置为我自己的组件来实现此目的的方法 使用下面的代码我的标签栏不会显示 const TabNav TabNavigator LaunchScreen scree
  • 查询SQL Server上存储过程的内容

    我正在探索一个遗留数据库系统 对其内部结构知之甚少 我想找到调用另一个存储过程的所有存储过程A 如何最好地做到这一点 我可以写这样的伪代码吗 select name from AllStoredProcedures as Asp where
  • 为什么 C++ 中必须声明函数,而 C 中则不然?

    所以我之前的一次考试有这个问题 到目前为止我一直在读你不需要任何语言的声明 哪个是对的 如果没有声明 C 会报错还是会运行 在涉及 C 和 C 的讨论中 函数声明 是一个相当模糊的术语 这些语言在这方面有很大不同 在C 语言中只有一种函数声
  • javascript、getelementsbyname 和焦点

    我正在尝试创建一个函数 该函数将查看用户名 如果无效 然后向用户发送警报 清除用户名字段 然后将用户名字段重新置于焦点中 我正在尝试使用 getElementsBynName 函数来完成这一切 除了让现场重新成为焦点之外 一切都在进行 我的
  • Theano.function 中“给定”变量的用途

    我正在阅读以下给出的逻辑函数的代码http deeplearning net tutorial logreg html http deeplearning net tutorial logreg html 我对之间的区别感到困惑inputs
  • 如何正确等待浏览器重排/重绘完成

    假设我有一个复杂的 HTML 组件 我想要为其设置动画 但每次需要设置动画时 都需要完成几件事 例如渲染新的 HTML 组件 设置高度 附加 css 类等 如果动画在浏览器重排 重绘过程中触发 这可能会导致动画不平滑 我可以使用 setTm
  • 合并 JSON 对象数组并使用 Javascript 进行排序

    我有一个包含 12 个数组的 JSON 对象 国家不同地区 我正在尝试将此数组合并到选择下拉菜单中 JSON 看起来像这样 latinamerica Argentina Bolivia Brazil Chile Colombia Ecuad
  • 未找到 Laravel 自定义特征

    我对特质很陌生 但我想尝试一下 但是 它似乎没有加载 我在 Laravel 应用程序目录下的文件夹中创建了一个名为 CheckPermsAgainstObjectTrait php 的特征 app Helpers 这是特征代码
  • TypeError:无法读取未定义的属性“map” - 如何访问本地 json API 中的数组

    我能够使用 fetch 在本地导入 api JSON 该 api 可在this http www recipepuppy com apiurl 如果你想查看它 问题如下 当传递状态 searchString 时 出现以下错误 类型错误 无法
  • 在视图中尝试捕获是不好的做法吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 MVC3 应用程序中 在 razor 块内使用 try catch 块是否被认为是不好的做法 in the cshtml view 非常如此
  • 在 Swift 1.1 中重写初始值设定项的正确方法

    这曾经在 Xcode 6 1 beta 中工作 class MainViewController NSViewController convenience override init self init nibName MainView b
  • 生成随机颜色

    我正在使用此代码生成随机颜色 工作正常 r rand 128 255 g rand 128 255 b rand 128 255 color dechex r dechex g dechex b return color 我只是想知道是否有
  • Flash,ActionScript 3:获取影片剪辑中包含的所有影片剪辑

    以免说我有一个 movieClip A 其中包含 movieClip B1 B2 B3 B4 B5 我在 A 中编写代码来接收 a 包含的所有影片剪辑并打印名称 我尝试了这个但没有成功 for each a MovieClip in thi
  • Supertest 在 Node 中进行 Jest 测试时给出 MaxListenersExceedingWarning 错误

    我正在努力使用 Jest 和 Supertest 以及我的 Node Express 应用程序来设置一些测试 我还使用 Sentry 来报告我的错误 我的 app js 文件中有以下几行代码来设置 Sentry app js Sentry