如何确保 Jest 在“unhandledRejection”上失败?

2024-03-30

我们的单元测试在持续交付管道的容器中运行。

有时,我们不会在单元测试中处理拒绝,但是,我认为这是不正确的,并且在我看来管道应该失败。

我怎样才能确保当我执行时jest并且在测试期间unhandledRejection事件发生,jest 会错误退出?

我尝试在设置脚本中挂钩事件侦听器:

/* jest.config.js */
module.exports = {
    setupFiles: ['<rootDir>/test/setup.ts'],
    // ...
}

在该设置脚本中,我可以检测到unhandledRejection事件,但不幸的是,我不能开玩笑

process.on('unhandledRejection', () => {
    console.error('Now what?');
    console.error('I want to make sure that jest exits with an error!');
});

您可以创建一个笑话配置文件jest.config.js并将以下条目放入其中:

module.exports = {
  ...
  setupFiles: ['<rootDir>/test/setup.js'],
  ...
};

然后在你的setup.js文件,你可以这样做:

process.on('unhandledRejection', (err) => {
  fail(err);
});

And unhandledRejection将无法通过测试,但有两个注意事项需要注意:

  1. 在没有测试运行时拒绝的承诺的未处理拒绝将结束该过程。这可能就是您想要和期望的。
  2. 当新测试运行时(不是发起承诺的测试)拒绝的承诺的未处理拒绝将使新测试失败,而不是原始测试失败。这很令人困惑,并且可能会导致难以跟踪错误。

正如上面提到的评论者,如果你的测试写得很好,那么你永远不应该遇到这种情况,但你并不总是有那么多的控制权。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确保 Jest 在“unhandledRejection”上失败? 的相关文章

  • 使用通过 (document.getElementById('ID')) 添加到数组的元素

    为什么这段代码不起作用 var all obj element new Array all obj element 0 document getElementById Img3 alert all obj element 0 style w
  • 如果列表中的某个字符位于该字符之前,请选择该字符

    我有这个正则表达式 a z s gmi 该正则表达式选择 从我的文字中 sme a eliezovce 2015 Spolo ne pre Eur pu Osl vili aj 940 但我只想选择 没有 如果列表中的某些字符 a z 之前
  • WebPack 源映射令人困惑(重复文件)

    我决定在我今天正在启动的一个新项目上尝试 WebPack 并且我从源映射中得到了非常奇怪的行为 我在文档中找不到任何相关信息 在浏览 StackOverflow 时也找不到其他人遇到此问题 我目前正在查看由以下公司制作的 HelloWorl
  • JavaScript 原型继承和 html canvas

    我是一名 Ruby 开发人员 最终决定认真学习 JavaScript 所以我买了一些书 开始深入研究 但当我试图理解原型继承时 我很快就陷入了困境 这本书的例子之一如下 给定一个 Shape 其原型有一个绘制方法 以及两个子形状 一个 Tr
  • 移动浏览器上的 Javascript / jQuery 页面更改事件

    我正在设计一个移动网站 同时考虑所有领先的浏览器 Safari Chrome Dolphin Opera 我想显示一个 正在加载 元素页面导航 更改 请求新页面 我无法在锚标签上使用点击事件 因为有很多锚标签存在preventDefault
  • 如何设置黄瓜环境变量

    我有以下 package json name newcucumber version 1 0 0 main index js scripts test node modules bin cucumber js firefox node mo
  • 如何使用 Selenium webdriver 测试对 SVG 对象的点击?

    我正在尝试编写代码来检查单击 SVG 对象的功能 例如此 URL 上的美国州 http www amcharts com svg maps map usa 这可行 但是有更好的方法吗 不需要物理移动鼠标的东西 robert new Robo
  • Java:从 ScriptEngine javascript 返回一个对象

    我正在尝试使用 Java 来评估 javascript脚本引擎 https docs oracle com javase 7 docs api javax script ScriptEngine html班级 这是我正在尝试做的事情的一个简
  • AngularJS:ng-show 与 display:none

    我有一个用例 我必须使用 CSS 默认隐藏 HTML 元素 如下所示 HTML div class item div CSS item display none 但是 我需要在页面加载后使用 ng show 切换元素的可见性 如下所示 di
  • 输入和文本区域可以拖动吗?

    MDN 规范以及我能通过 Google 找到的每个网站都说所有 HTML 元素都可以拖动 然而 在实践中 我发现我无法拖动文本输入或文本区域 即使它们已被禁用 例如 使用以下代码 img src http www placehold it
  • 从数据库中给定时间起经过的时间

    我有一个 HTML 表 其中包含从数据库中提取的记录 我正在使用 PHP MySQL 我的表中名为 Timer 的列未从数据库中检索 我需要在此处显示经过的时间 从数据库中的特定时间开始 例如 假设现在的时间是2013年2月21日下午6点2
  • Array.indexOf 如何比 Array.some 更高效

    这个问题的灵感来自于这个问题的竞争答案 具有多个参数的indexOf https stackoverflow com questions 39000151 indexof with multiple arguments 用户想知道一种有效的
  • 通过ajax POST提交两次表单

    插入到mysql using php通过文件调用AJAX 前insert语句php代码执行select查询到查找重复记录并继续insert statement Issue 从ajax调用php文件时 它执行了两次并得到作为重复记录的响应 好
  • 将命令行参数传递给 emscripten 生成的应用程序

    当使用 Emscripten 编译 C 程序时 会生成一个 HTML 页面来显示程序的结果 我想知道如何将命令行参数传递给应用程序 例如 对于原始的 C 程序 它是 bfs 32 1 我能够通过向生成的 html 文件添加一行来传递命令行参
  • 使用 sockjs 和 stomp 进行 /info 请求期间没有 cookie

    我正在尝试将 Spring Security 与 websockets 一起使用 作为一个例子 我正在使用 spring websocket chat https github com salmar spring websocket cha
  • 如何在javascript中删除对象的一部分

    这是我的代码 var data btn click function total data push id total cell val1 val2 val3 每次用户点击btn按钮 我向数据对象添加一些值 现在我的问题是如何删除有的部分i
  • 如何使用正则表达式解析 OCC 选项符号?

    OCC 选项符号由 4 部分组成 标的股票或 ETF 的根代码 用空格填充至 6 个字符 到期日期 6 位数字 格式为 yymmdd 期权类型 P 或 C 用于看跌或看涨期权 执行价格 为价格 x 1000 前面填充 0 至 8 位数字 举
  • 我应该采取什么圆角方法?

    因此 关于圆角的信息并不缺乏 我已经经历过其中的大部分 我发帖是为了征求社区对这一点的意见 我的场景是 我们正在开发一个圆角相关设计 主要用于交互
  • 如何连接/组合两个数组以连接成一个数组?

    我正在尝试将 JavaScript 中的 2 个数组合并为一个 var lines new Array a b c lines new Array d e f 这是一个简单的例子 我希望能够将它们组合起来 这样当读取第二行时 数组中的第四个
  • 具有值的 TextInput 不会更改值

    在我的react native应用程序中 我有一个API 我从中检索数据 并且我在输入值中设置数据 用户应该能够编辑这些输入并更新 但是当我尝试输入输入时它不会输入任何内容并且值保持原样 这是 TextInput 代码

随机推荐

  • Java的for循环有没有针对线程安全的优化?

    我有一段代码可以更改两个线程中的计数器 它不是线程安全的 因为我没有在代码中放置任何原子变量或锁 如果代码只运行一次 它会给出正确的结果 但我想运行它多次 所以我将代码放入 for 循环中 问题是只有第一个或前两个循环才会生成我期望的结果
  • Play 2.0 - 服务器重新启动后作为 Windows 服务启动

    我有游戏 作为 Windows 服务运行的应用程序 它是根据this http naoki sato name lab archives 263指导 问题是RUNNING PID当服务器重新启动时 应用程序根文件夹中的内容不会被删除 并且应
  • 为什么Java的hashCode不支持通用哈希?

    一些哈希表方案 例如布谷鸟哈希 http en wikipedia org wiki Cuckoo hashing or 动态完美哈希 http en wikipedia org wiki Dynamic perfect hashing 依
  • Scala 未绑定占位符参数

    我使用以下代码来满足我的需求 1 to 5 map i gt s x i Produces List x1 x2 x3 x4 x5 但我想使用占位符 根据字符串插值器文档 http docs scala lang org overviews
  • 如何将 IntPtr 转换为 int

    有时是窗把手int以及其他时间类型IntPtr int例子 DllImport user32 dll static extern uint GetWindowThreadProcessId int hWnd int ProcessId In
  • Eclipse 法语支持

    我需要在 eclipse 中输入一些法语字符 如何配置 eclipse 输入法语 我确实拥有默认 Eclipse 包装附带的所有字体 首选项 常规 工作区 文本文件编码 在我的配置中 我看到 Cp1252 可能是在我的操作系统当前设置之后设
  • 如何在 Docker 容器内运行 OpenCL + OpenGL?

    目的是在 Docker 容器内运行 OpenCL OpenGL 互操作 应用程序 但我还没有成功 Intro 我有配备 NVidia 显卡的笔记本电脑 因此我认为利用 NVidia Dockerfiles 1 2 将是一个很好的起点 以下
  • PCRE 中是否有“否定交替”或“否定字符串类”、“否定字符类”之类的东西?

    好吧 虽然模式 abc 匹配单个字符a b or c 模式 abc 匹配任何给定的字符isn t a b or c 现在如果我替换string for 特点在上面的声明中 如果我也将第一个模式更改为交替结构 那么它仍然适用 abc def
  • 在 jitpack 中获取“buildscript {} 块必须出现在任何插件 {} 块之前”错误

    我正在尝试使用 jitpack 发布我的 android 库 但得到buildscript blocks must appear before any plugins blocks error FAILURE Build failed wi
  • 我应该如何调整我的代码以实现 TBytes 和 TIdBytes 之间的兼容性?

    我遇到了与 中提到的相同的问题 Delphi XE4 Indy TBytes 和 TidBytes 之间的兼容性问题 https stackoverflow com questions 16339656 delphi xe4 indy co
  • 关闭连接后继续处理[重复]

    这个问题在这里已经有答案了 PHP 有没有办法关闭连接 本质上告诉浏览器没有更多数据 但继续处理 我想到的具体情况是 我想要提供缓存数据 那么如果缓存已过期 我仍然会提供缓存数据以获得快速响应 关闭连接 但继续处理以重新生成并缓存新数据数据
  • R-如何使用两种不同的调查设计进行双样本 t 检验

    我想对两个均值的相等性进行双样本 韦尔奇 t 检验 其中之一是使用简单随机抽样获得的 srsmean 另一个是使用调查包的调查权重计算得出的 mean weighted 我还进行了 t 检验mean weighted以及在调查设计中同时实施
  • Orion 的 Freeboard 数据源与 Context Broker 之间没有连接

    我一直在尝试连接 Freeboard 以可视化来自 OCB 的上下文信息 但是遇到了一些困难 导致我无法从那里接收任何数据 我的想法是 将Freeboard连接到OCB有问题 因为在OCB的订阅列表中没有任何新条目 并且Freeboard中
  • Visual Studio 2020 如何阻止选项卡中的文件名被缩短

    在 Visual Studio 对我来说是 2020 中 打开文件的文件名写在屏幕顶部的选项卡中 如果文件名太长 它会自动缩短 即代替真正的长文件名 cs它会说真的L lename cs 我想要显示整个文件名 我意识到我可以将鼠标悬停在选项
  • 使用退格控制字符擦除

    我正在尝试使用退格控制字符 b 删除行尾的尾随逗号 尽管它在没有其他输出的情况下有效stdout 如果之后有另一个输出 b 它变得毫无用处 这是一个例子 include
  • OpenCV2 薄板样条应用变换不起作用?

    我正在使用 Python OpenCV2 实现薄板变压器并遇到一些问题 当我执行 WarpImage 时 图像会正确扭曲 但是当我使用一些手动输入的点的estimateTransformation 时 这些点无法正确映射 相反 所有点最终都
  • Python 将列重塑为多列 - 交替行

    任何人都可以建议一种有效的方法 将一列 在 python pandas 数据框中 重塑为多列 并交替进行列分配 我可以用循环来做到这一点 但想知道是否有更优雅的方法 例如 请考虑以下示例 Added 有没有人有一个解决方案 可以将单列中的每
  • 如何比较两个日期?

    我有三个日期 1 上一个日期 2 当前日期 3 下一个日期 我想检查 currentDate 是否晚于前一个日期且早于 nextDate 我怎么做 NSDateFormatter df NSDateFormatter alloc init
  • Haskell 函数 :: [名称] -> [[(Name, Bool)]]

    鉴于以下情况 type Name String envs Name gt Name Bool 我必须实现 envs 以便给定名称列表 它返回名称和布尔值的所有可能组合 我的尝试没有返回所有可能的组合 这是我的代码 envs xxs x xs
  • 如何确保 Jest 在“unhandledRejection”上失败?

    我们的单元测试在持续交付管道的容器中运行 有时 我们不会在单元测试中处理拒绝 但是 我认为这是不正确的 并且在我看来管道应该失败 我怎样才能确保当我执行时jest并且在测试期间unhandledRejection事件发生 jest 会错误退