jest.toHaveBeenCalledWith 中松散匹配一个值

2024-01-05

我有一个分析跟踪器,它只会在 1 秒后调用,并且带有一个对象,其中intervalInMilliseconds(持续时间)值为not确定性的。

我该如何使用jest.toHaveBeenCalledWith测试对象?

 test('pageStats - publicationPage (will wait 1000ms)', done => {
  const track = jest.fn()

  const expected = new PayloadTiming({
    category: 'PublicationPage',
    action: 'PublicationPage',
    name: 'n/a',
    label: '7',
    intervalInMilliseconds: 1000 // or around
  })

  mockInstance.viewState.layoutMode = PSPDFKit.LayoutMode.SINGLE
  const sendPageStats = pageStats({
    instance: mockInstance,
    track,
    remoteId: nappConfig.remoteId
  })

  mockInstance.addEventListener('viewState.currentPageIndex.change', sendPageStats)

  setTimeout(() => {
    mockInstance.fire('viewState.currentPageIndex.change', 2)

    expect(track).toHaveBeenCalled()
    expect(track).toHaveBeenCalledWith(expected)

    done()
  }, 1000)

  expect(track).not.toHaveBeenCalled()
})

expect(track).toHaveBeenCalledWith(expected)失败并显示:

Expected mock function to have been called with:
      {"action": "PublicationPage", "category": "PublicationPage", "intervalInMilliseconds": 1000, "label": "7", "name": "n/a"}
    as argument 1, but it was called with
      {"action": "PublicationPage", "category": "PublicationPage", "intervalInMilliseconds": 1001, "label": "7", "name": "n/a"}

我看过开玩笑扩展 https://github.com/jest-community/jest-extended但我没有看到任何对我的用例有用的东西。

EDIT:我想强调的是,这里的所有答案都非常有用,您可以选择适合您的用例的答案。谢谢大家 - 这些答案都很棒!


这可以通过非对称匹配器来完成(Jest 18 中引入)

expect(track).toHaveBeenCalledWith(
  expect.objectContaining({
   "action": "PublicationPage", 
   "category": "PublicationPage", 
   "label": "7",
   "name": "n/a"
  })
)

如果你使用jest-extended你可以做类似的事情

expect(track).toHaveBeenCalledWith(
  expect.objectContaining({
   "action": "PublicationPage", 
   "category": "PublicationPage", 
   "label": "7",
   "name": "n/a",
   "intervalInMilliseconds": expect.toBeWithin(999, 1002)
  })
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jest.toHaveBeenCalledWith 中松散匹配一个值 的相关文章

  • 为什么React需要jsdom来测试?

    在为 React 组件编写测试时 您必须将它们渲染到 DOM 中 以便断言它们的正确性 例如 如果您想测试某个类是否已添加到给定状态的节点 则必须渲染到 DOM 节点 然后通过普通 DOM API 检查该 DOM 节点 问题是 考虑到 Re
  • 开玩笑嘲笑测试之间出血,重置并不能解决问题

    测试两个模块 helper它利用render 这是可能的render扔 所以我处理它helper 我想要进行测试以确保其按预期工作 当我最初编写测试时 我在测试本身中编写了该测试所需的内容 包括模拟 使用jest doMock 一旦所有测试
  • Jest 在没有 webpack 的情况下配置 typescript

    好吧 我正在用 typescript 编写一些 NPM 模块 但我没有使用 Webpack 来编译脚本 我应该如何配置 jest 才能使用打字稿文件正确运行 test spec ts import calc from index test
  • 使用 React 测试库提交后测试重定向

    我正在尝试测试登录组件 具体来说 它会在成功登录时重定向 手动测试时效果很好 但在我的测试中 它从不进行重定向 因此找不到 注销 链接 test successfully logs the in the user async gt cons
  • 如何测试子组件是否已渲染?

    在酶中 您可以检查子组件是否存在 如下所示 expect wrapper find ChildComponent toHaveLength 1 React 测试库中的这个测试相当于什么 我找到的所有在线示例都只涵盖了寻找 dom 元素的非常
  • 如何模拟 AWS sqs 调用进行单元测试

    我在 Node 应用程序中使用 AWS SQS 队列 并且必须为其编写单元测试用例 为此 我想模拟 SQS 函数调用sendMessage 在测试文件中 我应该做什么 我尝试过使用aws sdk mock但在拨打电话时sendMessage
  • 使用 Jest 模拟 Es6 类

    我正在尝试使用接收参数的构造函数来模拟 ES6 类 然后使用 Jest 模拟该类上的不同类函数以继续测试 问题是我找不到任何有关如何解决此问题的文档 我已经看过了这个帖子 https stackoverflow com questions
  • 使用 Jest 模拟延迟() RxJS

    有没有简单的方法来嘲笑delay 例如 带有假时间的可观察对象中的 RxJS 方法 我有这个方法 register user return this checkLog user delay 500 flatMap 当我删除时delay 方法
  • 重用 Jest 单元测试

    我正在尝试使用 Jest 测试几个数据库实现 为了帮助测试这些实现 我首先针对两个实现都预期实现的 API 提出了一组单元测试 我目前正在努力将这两个实现传递给测试套件 下面是最简单形式的 虚拟 MongoDB 实现 class Mongo
  • 如何正确模拟 i18next

    这是我的函数和测试的简化版本 虽然我嘲笑了 useTranslation 我收到以下错误 您正在传递一个未定义的模块 请检查您的对象 传递给 i18next use 7 i18n 8 use Backend gt 9 use initRea
  • 运行玩笑测试时,Firebase 在signInAnonymously() 上抛出“auth/network-request-failed”

    我正在使用 firebase 为我的应用程序 使用 create react app 构建 编写一些测试 并且我正在尝试匿名登录我的测试数据库 但认证失败 然而 所有其他 Firebase 操作 CRUD 都工作得很好 我还可以从在浏览器中
  • 如何使用 TypeScript、Jest 和 Enzyme 测试 React 中的按钮点击

    我正在使用 TypeScript 构建一个 React Native 应用程序 我正在使用 Jest 和 Enzyme 进行组件测试 我也在使用 React 导航 我正在努力编写单击按钮的单元测试 这是组件的代码 只是渲染函数 render
  • 如何在超级测试中模拟中间件?

    我想测试中间件是否在app js叫做 虽然我嘲笑该模块work js 它仍然运行原始代码 app js const work require work const express require require const app expr
  • 如何测试 jest Node JS 中 AWS 内置方法中使用的 .promise() 方法

    我想对其进行完整的单元测试 下面给出了我的函数的代码 function js async function sesSendEmail message var ses new aws SES apiVersion 2020 12 01 var
  • 如何模拟 typeORM 的 getCustomRepository

    我想对一个在其构造函数中使用 getCustomRepository 的类进行单元测试 但我只是想不出一种简单的方法来模拟它 这是我的班级代码 import getCustomRepository from typeorm export c
  • 用笑话测试实现react-leaflet映射的react组件的问题

    当我尝试测试实现react leaflet库的react组件时 遇到以下问题 C digital booking ui node modules react leaflet lib index js 1 Object
  • webpack 在 jest 单元测试中需要非 js 内容

    最近我将我的一个项目转换为 webpack 和 babel 它由淘汰组件制成 我在运行单元测试时遇到问题 如果我有一个文件tests文件夹之类的 import component from custom options test adds
  • CRA 的 src 之外的测试文件夹?

    我为我创建的应用程序编写测试npx create react app template typescript但我不知道如何将测试文件保存在组件旁边或单独的文件夹中test 我想我应该创造test文件夹外src src App tsx etc
  • 如何让 Jest 查看我为 MongoDB Stitch 编写的函数?

    我正在尝试 Stitch 这是一个来自 MongoDB 的无服务器 托管 JavaScript 环境 我的主要目的是帮助我学习现代 JavaScript 但我也正在尝试编写一个有用的应用程序 我编写了以下函数 并将其保存在我的 Stitch
  • 如何在react/redux应用程序中以jest方式访问组件的子组件

    我想在 Redux 应用程序中测试 Connect 内的组件 this component TestUtils renderIntoDocument

随机推荐

  • 集合视图单元格之间不需要的空间 组合布局

    我正在将集合视图用于场景 我创建了一个自定义的构图布局 如下所示 然而 当滚动时 有一个不需要的空间单元格的第二部分之间 它发生在不同的细胞类型中 我检查了间距或插图 但无法找出原因 构图布局部分 struct UIHelper stati
  • Angular:“找不到类型为‘object’的不同支持对象‘[object Object]”。 NgFor 仅支持绑定到 Iterables,例如数组

    我创建了一个 Angular 应用程序 它从 json 文件获取数据 但我在 html 中显示数据时遇到问题 很多变数都是荷兰语 对此我感到抱歉 我对这一切也有点陌生 这是我的服务 import Injectable from angula
  • Latex IEEE 模板:在多列乳胶内容中使用单列表[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 I am trying to use this IEEE template https www sharelatex com templa
  • CSS背景图片在移动浏览器上放大

    我的网站上有一个部分使用 CSS 背景图像 该网站是here http www robertsteilberg com 您可以在 联系方式 部分中看到我在哪里有固定背景图像 这是图像的当前 CSS hs contact section co
  • 如何使用 ActionScript 获取响应标头? (闪光)

    所以 我有一个像 www example com stream 这样的 URL 我需要向此 url 发出任何请求并获取 Http Rewspons 标头 如下所示 HTTP 1 0 200 OK Content type video x f
  • 如何处理 JSF 2 中的会话过期和 ViewExpiredException?

    考虑以下场景 在会话超时 过期 后 我单击 JSF 表单的提交按钮 浏览器显示一些异常消息 ViewExpiredException 无法恢复视图上下文 我想要做的是 在会话过期后自动重定向到网站的主页 这样做的机制是什么 任何帮助将非常感
  • 无法在 iOS 上创建托管对象上下文

    我创建了一个非核心数据项目 我现在想使用核心数据 在构建阶段 我将二进制文件与 CoreData framework 链接起来 在我的应用程序委托方法中 我想手动创建一个托管对象上下文 如下所示 NSManagedObjectContext
  • 如何恢复使用策略=我们的合并?

    我正在使用一个存储库 其中几周前执行了合并 我们刚刚发现它使用了 strategy ours标志 它应该使用 strategy option ours 标志 因此不会对 HEAD 应用任何更改 但是 我们需要应用这些更改 Git 已经识别出
  • python中的正交距离回归:返回值的含义

    我正在关注正交距离回归 http docs scipy org doc scipy reference odr html id1拟合因变量和自变量均带有误差的数据的方法 我用一条简单的直线拟合数据 我的模型是y ax b 现在 我可以编写代
  • 如何为版本 2 和版本 3 设置不同的 PYTHONPATH?

    假设我将 PYTHONPATH 设置为 bashrc如下 export PYTHONPATH PYTHONPATH ver2packages 当我检查 Python 3 中的 python 路径时 python3 gt gt gt impo
  • 更改完整日历中单元格的颜色

    我需要更改 arshaw 完整日历的单元格颜色 我的要求是 公司提供的假期列表的 td 单元格应该有相同的颜色 员工休假列表的 td 单元格应该具有相同的颜色 我们如何实现这一点 我能够改变事件的颜色 但不能改变单元格的颜色 另外 如果我们
  • 如何以编程方式更改 Android 谷歌地图 v2 中的语言

    我有一个应用程序 您可以在其中更改设置中的区域设置 目的是能够在应用程序内拥有与系统区域设置不同的区域设置 我也希望能够设置地图的语言 我只能找到 设置手机的系统语言 之类的答案 这不是我要找的 有没有办法以编程方式或从 xml 设置地图的
  • Matlab聚类编码-绘制散点图

    我有一年期间每日 每年的能源消耗数据集 我想显示该数据集的散点图 分为我期望存在的四个集群 由于四个季节的差异 我知道 matlab cluster 函数可以做到这一点 但我的统计数据非常生疏 我希望得到一些指导来确定哪个函数最好使用 Th
  • 如何在 Mac 版“Visual Studio Code”中取消链接/从 Git 存储库注销

    一直在玩这个微软编辑器 相当不错 但缺少一些最基本的 UI 位 不知道如何从我之前登录的 Git 存储库中取消链接 注销 退出并重新打开该软件不起作用 而且 没用说 我有很多我使用的存储库 任何想法 在侧面板的底部 有一个帐户图标 通常位于
  • 简单的CSS固定标题

    使以下页眉成为固定页眉的最简单方法是什么 http presentationtube com header php http presentationtube com header php我应该移动标题中的菜单元素吗 templatemo
  • 根位于 arr[0] 的二叉堆有什么好处

    我正在数组上写一个二进制堆arr 除叶节点外 每个节点都有两个子节点 根可以位于arr 0 or arr 1 接受的答案在为什么在数组实现的堆中索引 0 未被使用 https stackoverflow com questions 2290
  • TFS 到 TFS 迁移工具 - 域问题

    第三方为我们开发了一些应用程序 并一直使用 MS Team Foundation Server 2008 进行源代码控制 我的公司最近设置了 TFS 2008 环境 我们正在尝试将源代码从第 3 方开发人员 TFS 迁移到我们的 TFS 机
  • SQL 不断收到 ON UPDATE CASCADE 错误

    大家好 我正在使用这个 ON UPDATE CASCADE 功能 但我仍然无法让它工作 我的第一张桌子 CREATE TABLE Stab Stab id int not null Sprache VARCHAR2 2000 Vorname
  • Swift 保留周期和闭包

    我尝试做很多研究来理解保留周期 但我似乎在我的例子中找不到任何东西 我确实知道 如果我将属性设置为闭包 则会发生保留周期 并且需要使用弱或无主 但我有两个例子 我想知道它们是否正确完成 提前致谢 我已经尝试查看它们是否已经在 stackov
  • jest.toHaveBeenCalledWith 中松散匹配一个值

    我有一个分析跟踪器 它只会在 1 秒后调用 并且带有一个对象 其中intervalInMilliseconds 持续时间 值为not确定性的 我该如何使用jest toHaveBeenCalledWith测试对象 test pageStat