首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Jest测试Sagas失败,put与主要对象收到差异而没有明确的解释

Jest是一个流行的JavaScript测试框架,用于测试前端和后端代码。Sagas是Redux中用于处理副作用的中间件。当使用Jest测试Sagas时,如果put与主要对象收到差异而没有明确的解释,可能是以下几个原因导致的:

  1. Saga代码错误:首先,需要检查Sagas代码是否正确。确保在Sagas中正确地使用了put函数,并且传递了正确的参数。put函数用于触发Redux中的action。
  2. 异步操作问题:Sagas通常用于处理异步操作,例如API调用。在测试Sagas时,需要确保正确地模拟异步操作的返回结果。可以使用Jest提供的模拟函数(mock functions)来模拟API调用,以便在测试中返回预期的结果。
  3. 测试环境配置问题:有时,测试环境的配置可能会导致put与主要对象收到差异。确保测试环境中的Redux和Sagas配置正确,并且与实际应用程序的配置一致。
  4. Jest配置问题:Jest有一些默认配置,可能需要根据具体情况进行调整。可以检查Jest配置文件(通常是jest.config.js)中的相关配置项,例如moduleNameMapper、transform等。

总结起来,当使用Jest测试Sagas时,如果put与主要对象收到差异而没有明确的解释,需要检查Sagas代码是否正确、模拟异步操作的返回结果是否正确、测试环境配置是否正确,以及Jest配置是否需要调整。以下是一些相关的腾讯云产品和链接,可以帮助您更好地理解和应用这些概念:

  1. Jest官方文档:https://jestjs.io/
  2. Redux官方文档:https://redux.js.org/
  3. 腾讯云函数计算(Serverless):https://cloud.tencent.com/product/scf
  4. 腾讯云API网关:https://cloud.tencent.com/product/apigateway
  5. 腾讯云云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql
  6. 腾讯云容器服务:https://cloud.tencent.com/product/ccs
  7. 腾讯云人工智能平台:https://cloud.tencent.com/product/ai
  8. 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  9. 腾讯云移动开发平台:https://cloud.tencent.com/product/mpe
  10. 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  11. 腾讯云区块链服务:https://cloud.tencent.com/product/tbaas
  12. 腾讯云游戏多媒体引擎:https://cloud.tencent.com/product/gme
  13. 腾讯云视频处理服务:https://cloud.tencent.com/product/vod
  14. 腾讯云音视频通信(TRTC):https://cloud.tencent.com/product/trtc
  15. 腾讯云网络安全产品:https://cloud.tencent.com/solution/security
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

redux-saga

Effect层存在主要意义是为了易测试性,所以用简单描述对象来表示操作,多这样一层指令 虽然可以直接yield Promise(比如上面核心实现里示例),但测试case中无法比较两个promise...所以添一层描述对象来解决这个问题,测试case中可以简单比较描述对象,实际起作用Promise由redux-saga内部生成 这样做好处是单测中不用mock异步方法(一般单测中会把所有异步方法替换掉...从单元测试角度来看,Effect相当于把参数提出去了,让“比较传入参数是否相同”这一步可以在外面统一进行,不用逐个mock替换 P.S.关于易测试更多信息,请查看Testing Sagas 另外...,mock测试不但比较麻烦,还不可靠,毕竟与真实场景/流程有差异。...(不用mock异步函数),这不很过分 注意,不需要mock异步函数只是简化了单元测试一个环节,即便使用这种对比描述对象方式,仍然需要提供预期数据,例如: // 测试场景直接执行 const iterator

1.9K41
  • react项目架构之路初探

    如果采用传统开发方式,mvc架构不明确,页面(view)和逻辑层(controller)紧耦合,代码逻辑重复性工作较多,使用更改state方式 去渲染页面, 如果遇到组件之间传值,数据流通不明确...image 思考 有没有一种方法,可以使项目的mvc层次更加明确,使项目的数据结构以及数据流程更加清晰明了。...技术选型 项目主要使用了redux,react-redux,redux-saga,seamless-immutable,reduxsauce。...Effects 都是简单 Javascript 对象,包含了要被 Saga middleware 执行信息 redux-saga 优缺点 redux-thunk优缺点 Sagas 不同于thunks...,thunks 是在action被创建时调用, Sagas只会在应用启动时调用 redux-thunk中间件可以让action创建函数先不返回一个action对象,而是返回一个函数,函数传递两个参数

    2.5K10

    React saga_react获取子组件ref

    redux-saga安装 使用npm进行安装: npm install --save redux-saga 或者使用yarn: yarn add redux-saga redux-saga常用方法解释...是遵循函数式编程规则,上述数据流中,action是一个原始js对象(plain object)且reducer是一个纯函数,对于同步且没有副作用操作,上述数据流起到可以管理数据,从而控制视图层更新目的...通过使用Effect类函数,可以方便单元测试,我们不需要测试副作用函数返回结果。只需要比较执行Effect方法后返回描述对象,与我们所期望描述对象是否相同即可。...这个描述对象包含了所需要调用方法和执行方法时实际参数,我们认为只要描述对象相同,也就是说只要调用方法和执行该方法时实际参数相同,就认为最后执行结果肯定是满足预期,这样可以方便进行单元测试,...put使用方法: yield put({type:'login'}) select put方法redux中dispatch相对应,同样的如果我们想在中间件中获取state,那么需要使用select

    4.5K30

    Jest测试语法系列之Expect

    this.utils有很多有用工具,utils主要由来自jest-matcher-utils导出组成。...也就是说,预期对象是接收对象子集。因此,它匹配所接收对象,该对象包含不属于预期对象属性。 期望对象文字属性值不同,您可以使用matchers、expect.anything()等等。...此matcher递归地检查所有字段相等性,不是检查对象标识——这也称为“深度相等”。例如,toEqual和toBe在这个测试套件中表现不同,所以所有的测试都通过。...它将把接收到对象预期对象没有的属性匹配起来。...您还可以传递一个对象数组,在这种情况下,只有当接收到数组中每个对象(在上面描述番茄对象意义中)预期数组中相应对象相匹配时,该方法才会返回true。

    3.6K20

    【Web技术】639- Web前端单元测试到底要怎么写?

    fetch 来调用后台接口,真实项目没有差异。...单元测试部分介绍 先讲一下用到了哪些测试框架和工具,主要内容包括: jest测试框架 enzyme ,专测 react ui 层 sinon ,具有独立 fakes、spies、stubs、mocks...对于 actions 测试,我们主要是验证产生 action 对象是否正确: import * as type from '@/store/types/bizToolbar'; import * as...其实就是字面量对象! 我们可以用在业务代码同样方式来产生这些字面量对象,对于字面量对象断言就非常简单了,并且没有直接调用 api 层,就用不着做 mock 咯!...主要注意 fetch 是 promise 返回, jest 各种异步测试方案都能很好满足。

    3.1K30

    Taro 小程序开发大型实战(七):尝鲜微信小程序云(下篇)

    如果发帖失败,我们则使用 put 发起一个 POST_ERROR action 来更新创建帖子失败信息到 Redux Store,接着使用了 Taro UI 提供给我们消息框,来显示一个 error...,不是一个数组。...提示 我们在上面创建 post 时候,将 user 对象也添加到了 post 数据中,这里是因为小程序云数据库是 JSON 数据库,所以没有关系数据库外键概念,导致建关系困难,所以为了之后查询 post...如果获取帖子列表失败,我们则使用 put 发起一个 POST_ERROR action 来更新获取帖子列表失败信息到 Redux Store 一些额外工作 为了创建 watcherSaga 和...如果获取单个帖子失败,我们则使用 put 发起一个 POST_ERROR action 来更新获取单个帖子失败信息到 Redux Store 一些额外工作 为了创建 watcherSaga 和

    2.6K10

    记录第一次给开源项目提 PR

    起因 在写了几篇关于 ahooks 文章之后,收到了官方同学私信。 这让我受宠若惊同时也有点小兴奋和惶恐。 兴奋是,之前感觉参与开源是一件遥不可及事情,现在似乎我也能够去做了。...start 功能实现 我们先来看下现在 useRequest 轮询实现,其原理主要是在一个请求结束时候(不管成功失败),通过 setTimeout 进行重新请求,达到轮询效果。...= 0; }, 然后在请求结束时候,判断重试次数有没有达到了开发设置次数,假如没有则执行重试操作。...上述整体改造并不困难,但是我在写测试用例时候,就开始踩坑了,因为我很少书写前端测试用例,还是针对于 hooks 测试用例。...大致解释下该测试用例逻辑,我设置了重试三次,错误之后,运行了三次,errorCallback 就会被调用了 4 次(包括错误那次)。

    62611

    web前端好帮手 - Jest单元测试工具

    本文介绍如何使用Jest覆盖Web前端单元测试、如何统计测试覆盖率,Jest对比Mocha等内容。 Jest是什么? ? Jest是一个令人愉快 JavaScript 测试框架,专注于简洁明快。...现在只需要运行npm install -D jest一键安装Jest,便可以快速接入单元测试编写中。...另外,要注意系统路径差异,可能会造成Mac上编写测试在Windows上却运行失败: // window路径,在Mac上会报错expect(value).toMatchInlineSnapshot(...明确功能点测试不要用快照,比如下面我们明确测试setName方法是否能成功设置name属性时,这种情况不应该用快照: test("setName方法改变name属性“, () => { let...expect(person.name).toBe("shanelv") }); 这里我们不需要使用快照记录person实例其他属性,只需要测试name属性,所以明确测试点用明确代码去覆盖,这种场景不要用快照

    5K40

    QQ音乐商业化Web团队前端工程化实践总结

    JS模块化 JS模块化是一个逐渐演变过程,开始namespace概念实现了简单对象封装,约定私有属性使用_开头,到后来IIFE模式,利用匿名函数闭包原理解决模块隔离引用,下面介绍现在比较流行几种模块化标准...使用import引入模块,export导出模块; CommonJS执行时机不同,只是个只读引用,只会在真正调用地方开始执行,不是像CommonJS那样,在require时候就会执行代码; 支持度暂不完善...测试工具 测试框架就是运行测试用例工具,常见有Macha、Jasmine、Jest、AVA等等。 断言库主要提供语义化方法,用于对参与测试值做各种各样判断。...这些callback可以由第三方用户和开发者维持当前,修改,管理,而这些使用网站或者应用原始开发没有关联。...[QMPreload测试结果] 和上面QMPreload不同,对QMDialog组件判断则是需要差异值为0,如下面第三张图所示,没有差异点。

    4.3K112

    前端react面试题(必备)2

    总结: JSX 是一个 JavaScript 语法扩展,结构类似 XML。JSX 主要用于声明 React 元素,但 React 中并不强制使用 JSX。...)跳转,此时只是链接变了,并没有刷新页面标签就是普通超链接了,用于从当前页面跳转到href指向另一 个页面(非锚点情况)。...对新旧两棵树进行一个深度优先遍历,这样每一个节点都会一个标记,在到深度遍历时候,每遍历到一和个节点,就把该节点和新节点树进行对比,如果有差异就放到一个对象里面遍历差异对象,根据差异类型,根据对应对规则更新...为此,React将构建一个新 React 元素树(您可以将其视为 UI 对象表示)一旦有了这个树,为了弄清 UI 如何响应新状态改变,React 会将这个新树上一个元素树相比较( diff )...这里合成事件提供了原生事件相同接口,不过它们屏蔽了底层浏览器细节差异,保证了行为一致性。

    2.3K20

    Vue 应用单元测试策略实践 05 - 测试奖杯策略

    异常逻辑 这五个业务点建议 100% 覆盖 这个层级主要包含前述 5 大方面的业务逻辑,进行测试很有重构价值 mutation 层 是否正确完成计算 有逻辑 mutation 要求 100%覆盖率 这个层级输入输出明确...当我们在未来不小心破坏某个功能时,表达力强测试才能在失败时候给你非常迅速反馈。...它讲的是两方面: 看到测试时,你就知道它测业务点是啥 测试挂掉时,能清楚地知道失败业务场景、期望数据实际输出差异 总结起来,这些表达力主要体现在以下方面: 测试描述。...选用断言工具时,应注意除了要提供测试结果,还要能准确提供“期望值”“实际值”差异 上述第三点有些测试框架提供了反例,比如说chai和sinon提供断言API就不如jest友好,体现在: expect...未完待续…… ## 单元测试基础 ### 单元测试自动化意义 ### 为什么选择 Jest ### Jest 基本用法 ### 该如何测试异步代码?

    79730

    使用Jest测试包含setTimeout调用函数踩坑记录

    为了测试执行失败时有发生重试,我编写了如下测试用例: // job-queue.test.js const MockJob = jest.fn(() => { return { id: 0...回到我们测试用例,原因也就明确了:调用enqueueJob之后,catch中回调被加入了队列,随后delay则相当于直接调用了setTimeout(前面说到Promise对象构造时回调函数是立刻执行...在启用fake timer时候,setTimeout、setInterval都会使用Jest提供假实现,他们不会真正阻塞住测试用例。...咳咳……也就是说,Promise所使用微任务队列又是另外一个微任务队列,并且不归Jest控制! 因此,问题也明确了:runAllTicks什么作用也没有发挥,我们回到了最初遇到问题。...注意我们此时使用是fake timer,因此是无法使用await delay(0)这个方案,因此这会导致我们测试用例在等待setTimeout被回调,fake timersetTimeout又在等待

    6.8K60

    JavaScript 测试系列实战(二):深层渲染和快照测试

    今天,我们将更深入地挖掘并学习如何测试组件 Props,如何(以及为什么)使用 mount 函数,以及什么是 Jest 快照测试。...通常我们会在集成测试使用 mount 函数,测试组件之间如何协同工作,不仅仅是作为独立单元。 如果你不了解单元测试和集成测试这两个术语,可以看下本系列第一篇教程。...在测试 DOM 交互或者在处理高阶组件时,mount 函数也可以派上用场。_Mount 使用 DOM 实现模拟,Jest 默认使用是 jsdom。...当我们再次运行快照测试时,Jest 会将新快照快照进行比较,如果两者不一致,测试就会失败,从而帮助我们确保用户界面不会发生意外改变。...如果我们要更新所有失败快照,可以使用 -u 标志(别名为 --updateSnapshot) 来运行 Jest

    2.1K20

    前端工程化实践总结 |

    JS模块化 JS模块化是一个逐渐演变过程,开始namespace概念实现了简单对象封装,约定私有属性使用_开头,到后来IIFE模式,利用匿名函数闭包原理解决模块隔离引用,下面介绍现在比较流行几种模块化标准...使用import引入模块,export导出模块; CommonJS执行时机不同,只是个只读引用,只会在真正调用地方开始执行,不是像CommonJS那样,在require时候就会执行代码; 支持度暂不完善...测试工具 测试框架就是运行测试用例工具,常见有Macha、Jasmine、Jest、AVA等等。 断言库主要提供语义化方法,用于对参与测试值做各种各样判断。...这些callback可以由第三方用户和开发者维持当前,修改,管理,而这些使用网站或者应用原始开发没有关联。...QMPreload测试结果 和上面QMPreload不同,对QMDialog组件判断则是需要差异值为0,如下面第三张图所示,没有差异点。 ?

    4.5K41

    对 React 组件进行单元测试

    React 单元测试中用到工具 Jest 不同于"传统"(其实也没出现几年) jasmine / Mocha / Chai 等前端测试框架 -- Jest使用更简单,并且提供了更高集成度、更丰富功能...四个基础单词 编写单元测试语法通常非常简单;对于jest来说,由于其内部使用了 Jasmine 2 来进行测试,故其用例语法 Jasmine 相同。...失败-编码-通过 三部曲 由于测试结果中,成功用例会用绿色表示,失败部分会显示为红色,所以单元测试也常常被称为 “Red/Green Testing” 或 “Red/Green Refactoring...一些模块中可能耦合了对 window.xxx 这类全局对象引用,完全去实例化这个对象可能又牵扯出很多其他问题,难以进行;此时可以见招拆招,只模拟一个最小化全局对象,保证测试进行: //fakeAppFacade.jsvar.../fakeAppFacade'; 另外比如 LocalStroage 这类对象测试端环境中没有原生支持,也可以简单模拟一下: //fakeStorage.jsvar _util = {}; var fakeStorage

    4.3K40

    redux-saga_pub culture

    并且,因为Sage副作用是通过reduxaction触发,每一个action,sage都会像reduser一样接收到。...通过这个改变,前端应用代码结构更加清晰,业务层可复用部分增加。当然,Saga对自动化测试也支持很好,可以将逻辑单独使用自动化脚本测试,提高项目质量。...开始前需要了解几个概念 redux中间件 redux中文文档解释如下: 如果你使用过 Express 或者 Koa 等服务端框架, 那么应该对 middleware 概念不会陌生。...takeLatest在相同action被触发多次时候,之前副作用如果没有执行完,会被取消掉,只有最后一次action触发副作用可以执行完。...sagas.js import { takeEvery ,put } from 'redux-saga/effects'; import { GET_INIT_LIST } from '.

    1.4K10

    React + Redux Testing Library 单元测试

    单元测试失败。...相反,你可能会使用一个替身作为依赖对象,也就是我们接下来会提到 Fake/Stub/Mock/Spy。...像 matchMedia 这样方法在 jsdom 里面并没有被实现,这时候我们当然就需要去把它 Mock 掉,简单把要用到一些对象属性赋值就好,总之不至于在运行时报错。...代码模块易测性 保持单元测试独立性同时,也是在促使你去思考什么样模块才是符合「职责单一原则」。 单元测试站在使用角度来使用该模块,代码易测性也就代表着代码可维护性。...》 《Clean Code 代码整洁之道》 《Refactoring to Patterns 重构模式》 《SICP 计算机程序构造和解释

    2.4K10

    Jest单元测试之旅—实践总结

    这里针对自身场景选择合适工具既可以,因为我们业务主要使用React,Jest和React Testing Library则是我们最佳选择。下面也主要围绕该工具进行介绍。...Jest本身支持产出代码测试覆盖率,覆盖率则是评判单测好坏途径之一(并不是唯一,再次提及我们不能为了单测单测)。...其中toEqual是jest提供匹配器,jest提供了非常多匹配器,这里列举一些常用: toBe:使用Object.is精准匹配 toEqual:相比toBe会做深层比较,一般用于检测对象值 toBeNull...如果一直没有调用会导致超时并且当前用例失败。 示例如下: // src/example2.ts import { wait } from '....因为在测试中我们可能会多次用到,为了避免重复代码,这里我们使用了beforeAll进行处理,之对应是afterAll。它们两作用主要是文件内所有测试开始或结束前执行钩子函数。

    10.3K20

    2022社招React面试题 附答案

    合成事件是 react 模拟原生 DOM 事件所有能力一个事件对象,其优点如下: 兼容所有浏览器,更好跨平台; 将事件统一存放在一个数组,避免频繁新增删除(垃圾回收)。...React基于Virtual DOM实现了一个SyntheticEvent层(合成事件层),定义事件处理器会接收到一个合成事件对象实例,它符合W3C标准,且原生浏览器事件拥有同样接口,支持冒泡机制...(1)HOC 官方解释∶ 高阶组件(HOC)是 React 中用于复用组件逻辑一种高级技巧。HOC 自身不是 React API 一部分,它是一种基于 React 组合特性形成设计模式。...createClass方式方法定义使用逗号,隔开,因为creatClass本质上是一个函数,传递给它是一个Object;class方式定义方法时务必谨记不要使用逗号隔开,这是ES6 class语法规范...; 通俗点解释: 首先,用户(通过View)发出Action,发出方式就用到了dispatch方法 然后,Store自动调用Reducer,并且传入两个参数:当前State和收到Action,Reducer

    2K50
    领券