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

React 单元测试策略及落地

目录 第一部:为什么必须做单元测试 单元测试上下文 测试策略——测试金字塔 TDD——单元测试核心灵魂 第二部:什么是好单元测试 第三部:React 单元测试策略 第四部:React 单元测试落地...单元测试上下文 “为什么我们需要做单元测试”,这是一个关键问题。往小了说,不做单元测试代码无法保证后续不被破坏,无法重构,只能看着代码腐化;往大了说,不做单元测试团队响应力不可能提高。 ?...在实际项目上副作用还有其他中间层进行处理,比如 redux-thunk、redux-promise 等,本质是一样,只不过 saga测试性上要好一些。这一层副作用怎么测试呢?...Emit 事件、需要保存到 IndexDB 中去数据等) 来自官方错误姿势 redux-saga 官方提供了一个 util: CloneableGenerator用以帮我们写 saga 测试。...基于这个发现,我们推出了我们第二版 saga 测试方案:runSaga + 自定义拓展 jest expect 断言。

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

一天梳理完react面试高频题

redux异步流中间件其实有很多,当下主流异步中间件有两种redux-thunk、redux-saga。...时,该action函数体会自动执行 store.dispatch(action)}(2)使用redux-saga中间件redux-saga优点:异步解耦: 异步操作被被转移到单独 saga.js...提供了⼤量Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来,形成⼀个⾮常实⽤异步flow易测试...,提供了各种case测试⽅案,包括mock task,⽀覆盖等等redux-saga缺陷:额外学习成本: redux-saga不仅在使⽤难以理解 generator function,⽽且有数⼗...属性 to: string:重定向 URL 字符串属性 to: object:重定向 location 对象属性 push: bool:若为真,重定向操作将会把新地址加入到访问历史记录里面,并且无法回退到前面的页面

4.1K20

每日两题 T35

redux-saga redux-saga 是一个用于管理应用程序 Side Effect(副作用,例如异步获取数据,访问浏览器缓存等) library,它目标是让副作用管理更容易,执行更高效,测试更简单...redux-saga 使用了 ES6 Generator 功能,让异步流程更易于读取,写入和测试。...(有点像 async/await,但 Generator 还有一些更棒而且我们也需要功能)。 你可能已经用了 redux-thunk 来处理数据读取。...不同于 redux thunk,你不会再遇到回调地狱了,你可以很容易地测试异步流程并保持你 action 是干净。...redux-saga与其他redux中间件比较 •redux-thunk 缺点在于api层与store耦合,优点是可以获取到各个异步操作时期状态值,比较灵活,易于控制 •redux-promise优点是

75830

前端react面试题(必备)2

redux异步流中间件其实有很多,当下主流异步中间件有两种redux-thunk、redux-saga。...时,该action函数体会自动执行 store.dispatch(action)}(2)使用redux-saga中间件redux-saga优点:异步解耦: 异步操作被被转移到单独 saga.js...提供了⼤量Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来,形成⼀个⾮常实⽤异步flow易测试...,提供了各种case测试⽅案,包括mock task,⽀覆盖等等redux-saga缺陷:额外学习成本: redux-saga不仅在使⽤难以理解 generator function,⽽且有数⼗...状态(state)和属性(props)之间有何不同State 是一种数据结构,用于组件挂载时所需数据默认值。

2.3K20

redux-saga学习

放到 race 方法里以自动取消 redux-saga 使用了 ES6 Generator 功能,让异步流程更易于读取,写入和测试。...不同于 redux thunk,你不会再遇到回调地狱了,你可以很容易地测试异步流程并保持你 action 是干净。...redux-saga 使用 PUT 来描述dispatch 一个 action 到 Store 而不是直接dispatch action 原因也是为了方便测试。...反向控制 在 takeEvery 情况中,被调用任务无法控制何时被调用, 它们将在每次 action 被匹配时一遍又一遍地被调用。并且它们也无法控制何时停止监听。...注意 fork 类似于 call,fork 调用是非阻塞, yield fork(fn …args) 结果是一个 Task 对象 —— 一个具备着某些实用方法及属性对象。

2.7K10

字节前端必会react面试题1

redux异步流中间件其实有很多,当下主流异步中间件有两种redux-thunk、redux-saga。...时,该action函数体会自动执行 store.dispatch(action)}(2)使用redux-saga中间件redux-saga优点:异步解耦: 异步操作被被转移到单独 saga.js...提供了⼤量Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来,形成⼀个⾮常实⽤异步flow易测试...,提供了各种case测试⽅案,包括mock task,⽀覆盖等等redux-saga缺陷:额外学习成本: redux-saga不仅在使⽤难以理解 generator function,⽽且有数⼗...HOC 自身不是 React API 一部,它是一种基于 React 组合特性而形成设计模式。

3.2K20

前端二面高频react面试题集锦_2023-02-23

redux异步流中间件其实有很多,当下主流异步中间件有两种redux-thunk、redux-saga。...(1)使用react-thunk中间件 redux-thunk优点: 体积⼩: redux-thunk实现⽅式很简单,只有不到20⾏代码 使⽤简单: redux-thunk没有引⼊像redux-saga...时,该action函数体会自动执行 store.dispatch(action) } (2)使用redux-saga中间件 redux-saga优点: 异步解耦: 异步操作被被转移到单独 saga.js...: redux-saga提供了⼤量Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤ 灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来,形成⼀...个⾮常实⽤异步flow 易测试,提供了各种case测试⽅案,包括mock task,⽀覆盖等等 redux-saga缺陷: 额外学习成本: redux-saga不仅在使⽤难以理解 generator

2.8K20

百度前端高频react面试题(持续更新中)_2023-02-27

输出(渲染)只取决于输入(属性),无副作用 视图和数据解耦分离 缺点: 无法使用 ref 无生命周期方法 无法控制组件重渲染,因为无法使用shouldComponentUpdate 方法,当组件接受到新属性时则会重渲染...redux异步流中间件其实有很多,当下主流异步中间件有两种redux-thunk、redux-saga。...时,该action函数体会自动执行 store.dispatch(action) } (2)使用redux-saga中间件 redux-saga优点: 异步解耦: 异步操作被被转移到单独 saga.js...: redux-saga提供了⼤量Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤ 灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来,形成⼀...个⾮常实⽤异步flow 易测试,提供了各种case测试⽅案,包括mock task,⽀覆盖等等 redux-saga缺陷: 额外学习成本: redux-saga不仅在使⽤难以理解 generator

2.3K30

React saga_react获取子组件ref

(1)声明式Effect redux-saga中最大特点就是提供了声明式Effect,声明式Effect使得redux-saga监听原始js对象形式action,并且可以方便单元测试,我们一一来看...通过使用Effect类函数,可以方便单元测试,我们不需要测试副作用函数返回结果。只需要比较执行Effect方法后返回描述对象,与我们所期望描述对象是否相同即可。...,这里先提一笔,fork方法相当于web work,fork方法不会阻塞主线程,在非阻塞调用中十有用。...)之后语句 const action2=yieldtake(‘TO_LOGIN_OUT’)在call方法返回结果之前无法执行 在延迟期间登出操作会被忽略。...通过转化effects函数,可以方便进行单元测试 完善和严谨流程控制,可以较为清晰控制复杂逻辑。

4.5K30

redux-saga

作为一个Redux中间件,想让Redux应用中副作用(即依赖/影响外部环境不纯部分)处理起来更优雅 二.设计理念 Saga像个独立线程一样,专门负责处理副作用,多个Saga可以串行/并行组合起来,...on the Saga concept 三.核心实现 利用generator,让异步流程控制易读、优雅、易测试 In redux-saga, Sagas are implemented using Generator...Effect层存在主要意义是为了易测试性,所以用简单描述对象来表示操作,多这样一层指令 虽然可以直接yield Promise(比如上面核心实现里示例),但测试case中无法比较两个promise...所以添一层描述对象来解决这个问题,测试case中可以简单比较描述对象,实际起作用Promise由redux-saga内部生成 这样做好处是单测中不用mock异步方法(一般单测中会把所有异步方法替换掉...术语Saga指的是一系列操作集合,是个运行时抽象概念 redux-sagaSaga形式上是generator,用来描述一组操作,而generator是个具体静态概念 P.S.redux-saga

1.9K41

2021高频前端面试题汇总之React篇

redux异步流中间件其实有很多,当下主流异步中间件有两种redux-thunk、redux-saga。...(1)使用react-thunk中间件 redux-thunk优点: 体积⼩: redux-thunk实现⽅式很简单,只有不到20⾏代码 使⽤简单: redux-thunk没有引⼊像redux-saga...时,该action函数体会自动执行 store.dispatch(action) } 复制代码 (2)使用redux-saga中间件 redux-saga优点: 异步解耦: 异步操作被被转移到单独...功能强⼤: redux-saga提供了⼤量Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤ 灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来...,形成⼀个⾮常实⽤异步flow 易测试,提供了各种case测试⽅案,包括mock task,⽀覆盖等等 redux-saga缺陷: 额外学习成本: redux-saga不仅在使⽤难以理解 generator

2K00

2018年前端流行哪些技术?

如果不需要支持低版本 IE 的话,我们主要使用 React: React – 编写页面组件 Redux – 数据流和状态管理,一般结合 redux-saga 使用 React-router v4 – 前端路由管理...(Note:dva 整合了 redux, redux-router 以及 redux-saga。...在熟悉了基本 Redux, Redux-saga, Redux-router 使用之后,可以尝试用 dva 替代) Webpack – 前端构建工具 用到其他类库,技术选择和工具 前端开发我在用到其他类库...AutoPrefixer – PostCSS 插件,构建时根据 caniuse-lite 数据库以及你设置或者默认浏览器列表(browserslist)给 CSS 属性自动增加浏览器厂商前缀。...Ava, Chai.js, Jest, Enzyme, Headless Chrome – 测试框架,runner,断言库,单元测试,组件测试,端对端测试一些工具。

2.6K10

React全家桶与前端单元测试艺术|洞见

(机械也是极限一部,你不应该在使用工具过程中面临太多抉择,而应当专注于将业务翻译成测试)。 为什么谈React全家桶?...如果用Karma + Chrome真正地渲染测试,你会发现共享一个浏览器实例测试非常慢,几乎无法watch测试,因此我们TDD cycle就会变得不那么流畅了。...我们用一个叫做Redux-saga库来展现全家桶异步测试怎么写,Redux模仿目标是Elm architecture,但是简化掉了Elm作用模型,只保留了同步模型,Redux-saga其实就是把...Saga是一种worker模式,很早之前在Java社区就存在了。Redux-saga抽象出来多种通用作用比如call / takeEvery等等,然后有了这些作用,我们又可以愉快地判等了。...其他部分都可以开心地发同步事件了,此外有了Saga之后Redux终于有了“用事件触发事件”机制了,只用redux,应用复杂到一定程度你一定会想这个问题

1.1K72

2022社招React面试题 附答案

缺点:无法在 return 语句外访问数据、嵌套写法不够优雅 (3)Hooks 官方解释∶ Hook是 React 16.8 新增特性。...redux异步流中间件其实有很多,当下主流异步中间件有两种redux-thunk、redux-saga。...时,该action函数体会自动执行 store.dispatch(action)}复制代码 (2)使用redux-saga中间件 redux-saga优点: 异步解耦: 异步操作被被转移到单独...功能强⼤: redux-saga提供了⼤量Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤ 灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来...,形成⼀个⾮常实⽤异步flow 易测试,提供了各种case测试⽅案,包括mock task,⽀覆盖等等 redux-saga缺陷: 额外学习成本: redux-saga不仅在使⽤难以理解 generator

2K50

2021高频前端面试题汇总之React篇

缺点:无法在 return 语句外访问数据、嵌套写法不够优雅 (3)Hooks 官方解释∶ Hook是 React 16.8 新增特性。...redux异步流中间件其实有很多,当下主流异步中间件有两种redux-thunk、redux-saga。...时,该action函数体会自动执行 store.dispatch(action) } 复制代码 (2)使用redux-saga中间件 redux-saga优点: 异步解耦: 异步操作被被转移到单独...功能强⼤: redux-saga提供了⼤量Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤ 灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来...,形成⼀个⾮常实⽤异步flow 易测试,提供了各种case测试⽅案,包括mock task,⽀覆盖等等 redux-saga缺陷: 额外学习成本: redux-saga不仅在使⽤难以理解 generator

2K00

高频React面试题及详解

function saga 实现,代码异常/请求失败 都可以直接通过 try/catch 语法直接捕获处理 功能强大: redux-saga提供了大量Saga 辅助函数和Effect 创建器供开发者使用...,开发者无须封装或者简单封装即可使用 灵活: redux-saga可以将多个Saga可以串行/并行组合起来,形成一个非常实用异步flow 易测试,提供了各种case测试方案,包括mock task,...分支覆盖等等 redux-saga缺陷: 额外学习成本: redux-saga不仅在使用难以理解 generator function,而且有数十个API,学习成本远超redux-thunk,最重要是你额外学习成本是只服务于这个库...缺陷: 学习成本奇高: 如果你不会rxjs,则需要额外学习两个复杂库 社区一般: redux-observable下载量只有redux-saga1/5,社区也不够活跃,在复杂异步流中间件这个层面redux-saga...仍处于领导地位 关于redux-sagaredux- observable详细比较可见此链接

2.4K40

百度前端必会react面试题汇总

redux-thunk优点:体积⼩:redux-thunk实现⽅式很简单,只有不到20⾏代码;使⽤简单:redux-thunk没有引⼊像redux-saga或者redux-observable额外范式.../catch语法直接捕获处理;功能强⼤:redux-saga提供了⼤量Saga辅助函数和Effect创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤;灵活:redux-saga可以将多个Saga...可以串⾏/并⾏组合起来,形成⼀个⾮常实⽤异步flow;易测试,提供了各种case测试⽅案,包括mock task,⽀覆盖等等。...redux-saga缺陷:额外学习成本:redux-saga不仅在使⽤难以理解generator function,⽽且有数⼗个API,学习成本远超reduxthunk,最重要是你额外学习成本是只服务于这个库...redux-observable缺陷:学习成本奇⾼:如果你不会rxjs,则需要额外学习两个复杂库;社区⼀般:redux-observable下载量只有redux-saga1/5,社区也不够活跃,在复杂异步流中间件这个层

1.6K10
领券