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

Sentry 开发者贡献指南 - 前端(ReactJS生态)

组件与视图 app/components/ app/views 文件夹都包含 React 组件。 使用通常不会在代码其他部分重用 UI 视图。 使用设计为高度可重用 UI 组件。...如果我们尝试访问 undefined 或 null 对象属性,它将停止并返回 undefined。...在需要少量状态或访问 react 原语(引用上下文)展示组件中,它们通常是一个不错选择。例如,具有滑出(slide-out)或可展开状态(expandable state)组件。...使用 React Testing Library 我们正在将我们测试从 Enzyme 转换为 React Testing Library。在本指南中,您将找到遵循最佳实践避免常见陷阱技巧。...仅在检查不存在使用 queryBy... 仅当期望元素在可能不会立即发生 DOM 更改后出现时才使用 await findBy...

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

单元测试

@testing-library/react 是一个用于测试 React 组件 JavaScript 测试工具,它提供了一组简单且易于使用 API,可以帮助你编写可读性高、可维护性强测试代码。...@testing-library/jest-dom 是一个用于增强 Jest 测试框架,它提供了一组用于 DOM 断言定制化匹配器工具函数。...@testing-library/react-hooks 是一个用于测试 React Hooks 工具。它提供了一组用于编写可靠可维护测试实用函数工具。...,找不到元素会报错 queryBy* 用于查询我们希望它不存在元素并进行断言,找不到元素返回null findBy* 用于查询需要等待异步元素,不需要使用waitFor包裹 批量选择:getAllBy...act 使用场景如下: 当你在测试中进行与 React 组件交互(例如模拟用户点击、输入等),可以使用 act 来确保组件在更新后进行正确断言。

18610

React 组件如何写单元测试

组件 hooks 可以使用 @testing-library/react 这个包,然后测试用例使用 jest 来组织。...第一种方法 screen 是 @testing-library/react 提供 api,是从全局查找 dom,可以直接根据文本查(getByText),根据标签名属性查(getByRole) 等...变更不频繁代码,还是有必要写单测,写一次,自动测试 n 次,收益很大。 我们学了 react 组件 hook 单测写法。...主要是用 @testing-library/react 这个,它有一些 api: render:渲染组件,返回 container 容器 dom 其他查询 api fireEvent:触发某个元素某个事件...jest api 加上 @testing-libary/react 这些 api,就可以写任何组件、hook 单元测试了。

41820

Jest来给React完成一次妙不可言~单元测试

因为有很多足够多优秀前端框架(比如 React,Vue Angular);以及一些易用且强大UI(比如 Ant Design)为我们保驾护航,极大地缩短了应用构建周期。...技术栈选择 当我们想要为 React 应用编写单元测试时候,官方推荐是使用 React Testing Library[1] + Jest[2] 方式。...因此,可以从DOM测试其他一些有用方法(debug、rerender或unmount)获得大量查询。...•findBy:返回一个promise,该promise将在找到与给定查询匹配元素解析。如果未找到任何元素,或者在默认超时时间为4500毫秒后找到了多个元素,则承诺将被拒绝。...这里,像往常一样,我们使用 getByTestId 选择元素检查第一个测试如果按钮禁用属性。对于第二个,如果按钮是否被禁用。 如果您保存文件或在终端纱线测试中再次运行,测试将通过。

14.8K33

使用storybook管理React组件

测试UI组件 4.1 写测试用例原因 找到bug 新修改没有改变已有的接口功能 将测试用例作为文档 4.2 测试结构 使用storyshots插件来实现,其核心是使用Jest,原理是每次生成一份DOM...PS:下次运行Jest,只有DOM结构与上次完全一致测试才会通过,通常会有两种方法来解决这种情况: 找到问题,修复不同; 用新DOM结构替换旧。...4.3 测试交互 storybook交互性测试可以使用 Enzyme来模拟用户输入,然后使用Mocha or Jest来进行结果测试,storybook又一个专门插件帮助我们集成他们:specifications...UI组件属性,更多使用方法可以参考specifications插件使用。...4.4 测试样式 样式测试这里采用Puppeteer Jest来实现,其原理是利用Puppeteer无头chrome浏览器storybookurl绑定组件特点,来渲染不同UI组件,再进行图片快照对比

3.3K20

从echarts-for-react源码中学习如何写单元测试

/src/utils'; // 把遇到计时器挂起,在必要,再使用jest.runOnlyPendingTimers执行掉已经挂起计时器 jest.useFakeTimers(); // 描述块,将多个...() 作用: 把遇到计时器挂起,在必要,再使用jest.runOnlyPendingTimers执行掉已经挂起计时器 这里使用jest.useFakeTimers()目的就是暂停正在执行timer...② 当测试函数比较复杂,非常方便,不用了解内部详细代码,只需返回值符合期望即可 如何测试ReactComponent 当我写完一个React组件,我该如何测试它呢?...测试用例 import React from 'react'; //enzyme用来判断、操纵遍历 ReactComponents import {mount} from 'enzyme'; import...()区别 ⑤ toEqual()toBe()区别 ⑥ 如何测试DOM节点上属性 ⑦ 如何测试React组件实例上属性 ⑧ 如何测试组件上props ⑨ jest.fn()作用 ⑩ 如何测试组件已卸载

6.1K50

React 组件测试技巧

React 组件常见测试模式。 注意: 此页面假设你正在使用 Jest 作为测试运行器。如果你使用不同测试运行器,你可能需要调整 API,但整体解决方案是相同。...常见方法是使用一对 beforeEach afterEach 块,以便它们一直运行,并隔离测试本身造成影响: import { unmountComponentAtNode } from "react-dom...(container); container.remove(); container = null; }); 你可以使用不同测试模式,但请记住,即使测试失败,我们也要执行清理。...这些示例其余部分使用 act() 来作出这些保证。 你可能会发现直接使用 act() 有点过于冗长。为了避免一些样板代码,你可以使用 React 测试,它助手是用 act() 封装。...注意: React 测试为触发事件提供了一个更简洁助手。 --- 计时器 {#timers} 你代码可能会使用基于计时器函数( setTimeout)来安排将来更多工作。

4.9K00

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

Jest基础使用 项目接入Jest 安装JestJest类型文件,类型文件可以让代码编辑器(Webstorm)提供Jest相关接口参数提示: npm install -D jest @types/...合理describe()分组按功能细分test()测试对日后维护起到很关键作用。 断言常用接口 Jest内置Expect断言,下面列举几个常用断言方法就足以应付正常测试场景。...钩子作用域 测试难免有些重复逻辑,比如我们测试读写文件需要准备个临时文件,或者比如下面我们使用afterEach钩子,在每个测试完成后重置全局变量: global.platform = {};function...expect(person.name).toBe("shanelv") }); 这里我们不需要使用快照记录person实例其他属性,只需要测试name属性,所以明确测试点用明确代码去覆盖,这种场景不要用快照...首先,由于Jest启动多个进程,并发地跑测试,我们使用node-inspect方式去跑断点调试,chrome://inspect页面上断点不会被中断,导致我们无法断点调试。

4.9K40

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

使用define定义一个模块,使用require加载模块; 异步加载,可以并行请求依赖模块; 原生JavaScript运行环境无法直接执行AMD规范模块代码,需要引入第三方支持,requirejs...PropTypes React在15.5版本后将类型检查React.PropTypes移除后使用prop-types代替,它是一种运行时类型检测机制,包含一整套验证器,可用于确保组件属性接收数据是正确类型...断言可以支持不同开发模式,比如chai.js就是一个BDD/TDD模式断言测试覆盖率工具是用于统计测试用例对代码测试情况,生成相应报表,Istanbul(Jest内置集成)。...从严格意义上来说,这并不是一种标准模块化方式,只是通过闭包实现了私有数据,将数据行为封装到一个函数内部, 通过给全局对象window.M添加属性来向外暴露接口,我们无法确认每个模块间依赖关系,模块合并还要关注依赖顺序...[CSS模块化方案对比] 单元测试框架 单元测试框架我们选择了Jest,主要是因为开箱即用,不需要再引入断言,生态也很好,较多用于React项目,而且组内UI自动化测试系统是支持Jest,这篇文章

4.2K112

前端工程化实践总结 |

使用define定义一个模块,使用require加载模块; 异步加载,可以并行请求依赖模块; 原生JavaScript运行环境无法直接执行AMD规范模块代码,需要引入第三方支持,requirejs...PropTypes React在15.5版本后将类型检查React.PropTypes移除后使用prop-types代替,它是一种运行时类型检测机制,包含一整套验证器,可用于确保组件属性接收数据是正确类型...断言可以支持不同开发模式,比如chai.js就是一个BDD/TDD模式断言测试覆盖率工具是用于统计测试用例对代码测试情况,生成相应报表,Istanbul(Jest内置集成)。...从严格意义上来说,这并不是一种标准模块化方式,只是通过闭包实现了私有数据,将数据行为封装到一个函数内部, 通过给全局对象window.M添加属性来向外暴露接口,我们无法确认每个模块间依赖关系,模块合并还要关注依赖顺序...CSS模块化方案对比 单元测试框架 单元测试框架我们选择了Jest,主要是因为开箱即用,不需要再引入断言,生态也很好,较多用于React项目,而且组内UI自动化测试系统是支持Jest,这篇文章

4.4K41

干货 | 携程租车React Native单元测试实践

一、技术选型: Jest + Enzyme + react-hooks-testing-library 1.1 jest Jest是FaceBook出品前端测试框架,适合用于ReactReact...有以下几个特点: 简单易用:易配置,自带断言mock。 快照测试:能够创造一个当前组件渲染快照,通过上次保存快照进行比较,如果两者不匹配说明测试失败。...1.2 Enzyme Enzyme是AirBnb开源React测试工具,通过一套简洁api,可以渲染一个或多个组件,查找元素,模拟元素交互(点击,触摸),通过Jest相互配合可以提供完整...七、Jest 异步测试 Jest单元测试是同步,因此面对异步操作fetch获取数据,需要进行异步模拟测试。..._onClear).toBeCalled();//测试组件实例上方法是否被调用 九、Redux测试使用React或者React Native通常会使用Redux进行状态管理,需要mock store

6K30

React 组件进行单元测试

无论是在代码初始搭建过程中,还是之后难以避免重构修正bug过程中,常常会陷入逻辑难以梳理、无法掌握全局关联境地。...React 单元测试中用到工具 Jest 不同于"传统"(其实也没出现几年) jasmine / Mocha / Chai 等前端测试框架 -- Jest使用更简单,并且提供了更高集成度、更丰富功能...它模拟了 jQuery API,非常直观并且易于使用学习,提供了一些与众不同接口几个方法来减少测试样板代码,方便判断、操纵遍历 React Components 输出,并且减少了测试代码实现代码之间耦合...对于一些组件共有函数等,完善测试也是一种最好使用说明书。...react-bootstrap/modal 在一个项目中用到了 react-bootstrap 界面测试一个组件,由于包含了其 Modal 模态弹窗,而弹窗组件是默认渲染到 document 中

4.2K40

写代码无BUG,网易云前端单元测试方案总结

而我们在做单元测时往往需要断言能够提供良好测试报告,这样才能一目了然地看到有哪些断言通过没通过,所以使用专业单元测试断言还是很有必要。 chai ?...有了断言之后我们还需要使用测试框架将我们断言更好地组织起来。 mocha Jasmine ?...jest Jest 是 facebook 出一个完整单元测试技术方案,集 测试框架, 断言, 启动器, 快照,沙箱,mock工具于一身,也是 React 官方使用测试工具。...上面的内容介绍了 chai , mocha , karma , jasmine jest, 每种工具分别对应一些自己特有的工具链,在选取合适测试工具根据实际需要选择, 测试领域还有非常多工具数都数不过来...另外测试 React组件除了 Enzyme 提供操作, Jest 中还有很多其他有用特性,比如可以 mock 一个 npm 组件实现,调整 setTimeout 时钟等,真正进行单元测试,这些工具也是必不可少

9.5K20

React背后工具化体系

:默认模式,在WHITESPACE_ONLY基础上进一步缩短变量名(局部变量函数形参),逻辑功能基本等价,特殊情况(eval('localVar')按名访问局部变量和解析fn.toString()...)除外 ADVANCED_OPTIMIZATIONS:在SIMPLE_OPTIMIZATIONS基础上进行更强力重命名(全局变量名,函数名属性),去除无用代码(走不到,用不着),内联方法调用常量...:通过DOM树快照来对React/React Native组件做UI测试,把组件渲染结果与之前快照做对比,没有差异就算通过 零配置:不像Mocha强大灵活但配置繁琐,Jest开箱即用,自带测试驱动、断言...通过Babel插件来做,在测试环境构建注入检查: // ref: https://github.com/facebook/react/blob/master/scripts/jest/preprocessor.js...自动化测试并不总能发现DOM问题,例如浏览器显示输入值可能与通过DOM属性取到不一致 不愿意做浏览器环境自动化测试,又想确保维护中添加一些边界case处理不被更新改动破坏,所以决定采用最有效方式

1.5K20

前端测试体系建设与最佳实践总结

因为我们项目使用React 技术栈,这里主要介绍 React 项目的技术选型使用。 单元测试 ? Mocha 是生态最好,使用最广泛单测框架,但是他需要较多配置来实现它高扩展性。...Augular 默认测试框架就是 Karma + Jasmine,而 React 默认测试框架是 Jest. Jest 被各种 React 应用推荐使用。...UI 测试 UI 测试尽管有官方测试框架 ReactTestUtils Test Render,但是它们 API 比较复杂,官方文档也是推荐使用 react-testing-library 或...我们测试点在加菜减菜按钮事件是否被正确触发,当数量为 0 ,减号按钮和数量是否展示,数量不为 0 ,展示是否正确。...在原有逻辑增加新功能,通过运行之前测试,能够大大提高迭代质量稳定性。 这篇文章主要总结了笔者在 React 项目中书写测试经验与沉淀,而对于 Vue 项目,暂时还没有深入研究。

5.3K30

前端单元测试Jest

概述 关于前端单元测试好处自不必说,基础介绍知识可以参考之前博客链接:React Native单元测试。在软件测试领域,测试主要分为:单元测试、集成测试功能测试。...前端测试框架有很多:mocha, jasmine, ava, testcafe, jest,他们都有各自擅长领域特点,而我们采用jest框架具有如下一些特点: 适应性:Jest是模块化、可扩展可配置...; 沙箱快速:Jest虚拟化了JavaScript环境,能模拟浏览器,并且并行执行; 快照测试Jest能够对React 树进行快照或别的序列化数值快速编写测试,提供快速更新用户体验; 支持异步代码测试...Snapshot 快照测试第一次运行时候会将被测试ui组件在不同情况下渲染结果保存一份快照文件,后面每次再运行快照测试,都会第一次比较,除非执行“yarn test – -u”命令删除快照文件...] = ` 我是react组件 `; 如果被测试代码有正常更新,可以使用jest --updateSnapshot ”命令重新更新缓存文件。

2.7K20
领券