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

Jest + React Testing Library 单测总结

2.3 Jest Mock 在查看官方文档时候,Jest 匹配器还有一类匹配器专门用来检查 Jest Mock 函数。...screen 为测试用例提供了一个全局 DOM 环境,通过这个环境,我们就可以去使用库中提供不同函数去定位元素,定位后元素可以用于断言判断或者用户交互。...3.3 定位元素 3.3.1 Query 类型 定位元素方法在 RTL 称为 Query,Query 帮助我们去找到页面元素。...而 findby 作用主要用于那些最终会显示在页面当中异步元素。 3.3.2 Query 内容 那么,getBy...、queryBy... 和 findBy... 后面具体可以查询什么内容呢?...如果你想要验证一个元素不在页面,使用 queryBy,否则默认使用 getBy。 RTL 所有定位方法可 点击 查看。

4.5K20

Sentry 前端测试实践:从 Enzyme 迁移到 RTL

什么是 RTL React Testing Library(RTL)是一个 React 组件测试库,它通过 DOM 交互测试组件,不像 Enzyme 那样直接使用了 React 内部东西。...RTL 提供基于角色选择器可以更好地进行可访问性测试RTL 不存在我们在使用 Enzyme 时遇到一些陷阱,比如在测试案例之间不清理组件(速度慢)和直接修改组件状态(糟糕测试实践)。...在大型组件上使用 getByRole 时性能较差 根据 RTL 指南,测试应该像用户组件交互方式一样。...其中一个查询是 getByRole,用于查询可访问性树公开所有元素,根据 RTL 指南,这个查询应该是我们首选项。 尽管 getByRole 很有用,但我们发现这个查询性能非常差。...使用 getByRole 选择器大型组件可能会比较慢,我们一个解决方法是避免多次调用这个查询,将它保存到一个变量,或者切换使用 getByText 或 getByTestId。 2.

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

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

以下是一些来自文档查询示例: •getByLabelText:搜索作为参数传递给定文本匹配标签,然后查找该标签关联元素。...•getByPlaceholderText:搜索具有占位符属性所有元素,并找到作为参数传递给定文本相匹配元素。...一个特定查询有很多变体: •getBy:返回查询第一个匹配节点,如果没有匹配元素找到多个匹配,则抛出一个错误。...•findBy:返回一个promise,该promise将在找到给定查询匹配元素时解析。如果未找到任何元素,或者在默认超时时间为4500毫秒后找到了多个元素,则承诺将被拒绝。...•findAllBy:返回一个promise,当找到给定查询匹配任何元素时,该promise将解析为元素数组。 执行(Act) 现在一切都准备好了,我们可以行动了。

14.8K33

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

有关 RTL 提示,请查看此页面。 注意:你文件名必须是 .spec.jsx 否则 jest 不会运行它! 我们在 setup.js 定义了有用 fixtures,使用这些!...我们不是处理渲染组件实例,而是以用户相同方式查询 DOM。我们通过 label 文本找到表单元素(就像用户一样),我们从他们文本中找到链接和按钮(就像用户一样)。...为确保测试类似于用户与我们代码交互方式,我们建议使用以下优先级进行查询: getByRole - 这应该是几乎所有东西首选选择器。...getByTestId - 因为这不反映用户如何应用交互,所以只推荐用于不能使用任何其他选择器情况 如果您仍然无法决定使用哪个查询, 请查看 testing-playground.com 以及 screen.logTestingPlaygroundURL...https://testing-playground.com/ 不要忘记,你可以在测试任何地方放置 screen.debug() 来查看当前 DOM。 在官方文档阅读有关查询更多信息。

6.9K30

使用 React Testing Library 15 个常见错误

你应该按这个页面顺序来使用 Query API。如果你目标和我们一样,都想通过测试来确保用户在使用时应用能够正常工作的话,那你就要尽量用更接近用户使用方式来查询 DOM。...,然而,如果你用 querySelector 这些来做查询的话,不仅我们不能模仿用户 UI 交互行为,测试代码也会变得很难读,而且容易崩。...唯一好处是可以用来判断这个元素是否没有被渲染到页面上。...建议:query* API 只用于断言当前元素不能被找到 用 waitFor 等待 find* 查询结果 重要程度:高 // ❌ const submitButton = await waitFor(...翻译这篇文章还是花不少时间,同时也学到了很多 RTL 这个库一些思想,希望大家也能吸收里面一些测试思路。

1.2K20

Sentry 开发者贡献指南 - 测试技巧

整理自官方开发文档 目录 获取设置 Python 测试 运行 pytest 在测试创建数据 设置选项和功能标志 外部服务 可靠地使用时间 在测试检查 SQL 查询 验收测试 运行验收测试 定位元素...建议使用 devservices 来确保所需要服务正在运行。如果您还使用本地环境进行本地测试,您将需要使用 --project 标志将本地测试测试套件卷分开: # 关闭本地测试服务。...视觉回归 像素很重要,因此我们使用视觉回归来帮助捕捉 Sentry 渲染方式意外变化。在验收测试期间,我们捕获屏幕截图并将您拉取请求屏幕截图批准基线进行比较。...虽然我们对视觉回归有相当广泛覆盖,但仍有一些重要盲点: 悬停(Hover)卡片悬停状态 模态窗口 图表和数据可视化 所有这些组件和交互通常不包含在可视化快照,您在处理其中任何一个时都应该小心。...Jest 测试 我们 Jest 套件涵盖为前端组件提供功能和单元测试。我们更喜欢编写组件交互并观察结果(导航、API 调用)功能测试, 而不是检查 prop 传递和 state 突变。

1.6K50

爬虫选择器算法漫谈

,可能有一个或者多个CSS样式能够之匹配,这个匹配过程就叫做CSS Select,每一项规则都是一个Selector,对于一个页面来说,可能存在大量CSS Selector,CSS匹配规则可能很复杂...CSS匹配测试用例在Webkitdom子目录,Chromium页面渲染引擎虽然叫做Blink,但是大部分代码还是Webkit。...:adopt(std::move(selectorList)); // 查询第一个元素 elm = query->queryFirst(*document); // 断言为找到元素...,通过query查询document里面是否有匹配元素。...\n" end 这段脚本功能是解析codeforces题目页面,通过CSS选择器匹配标题、内容、输入3个部分element,然后将其转换为markdown文本插入到笔记,用起来和python

37510

Vue 应用单元测试策略实践 03 - Vue 组件单元测试

阅读和练习本文Vue单元测试部分 // Then 当然,他能够学会Vue组件在测试当中几种渲染方式 他能够学会UI组件分类,特别是交互行为测试方式 组件化 UI 测试 在组件化出现之前,我们都压根不谈...其实组件化并不全是为了复用,很多情况下也恰恰是为了分治,从而我们可以分组件对 UI 页面进行开发,然后分别对其进行单元测试。 ?...我们可以通过 Vue 组件构造函数引用找到该组件,与此同时也可以基于 Vue 组件属性子集来查找组件和节点,或者通过根据 $ref 选择相应元素。...未完待续…… ## 单元测试基础 ### 单元测试自动化意义 ### 为什么选择 Jest ### Jest 基本用法 ### 该如何测试异步代码?...## Vue 单元测试 ### Vue 组件渲染方式 ### Wrapper find() 方法选择器 ### UI 组件交互行为测试 ## Vuex 单元测试 ### CQRS Redux-like

1.3K10

知识整理之CSS篇

元素 image.png 伪类元素区别作用 CSS3对伪类定义: 伪类存在意义是为了通过选择器找到那些不存在DOM树信息以及不能被常规CSS选择器获取到信息。...通过伪类实现了常规CSS无法实现逻辑。 CSS3对于伪元素定义 伪元素在DOM创建了一些抽象元素,这些对象不存在文档。 伪元素由两个冒号::开头,然后是伪元素名称。...常规流(也称标准流、普通流)是一个文档在被显示时最常见布局形态。一个框在常规必须属于一个格式化上下文,你可以把BFC想象成一个大箱子,箱子外边元素将不与箱子内元素产生作用。...因此这能让你自己选择性地移除掉某些永远不会用到部分(比如表单一般化)。 5. normalize.css 拥有详细文档 normalize.css代码基于详细而全面的跨浏览器研究测试。...这个文件拥有详细代码说明并在Github Wiki中有进一步说明。这意味着你可以找到每一行代码具体完成了什么工作、为什么要写这句代码、浏览器之间差异,并且你可以更容易进行自己测试

1.5K20

微信小程序自动化框架minium实践

minium 来进行函数 mock, 可以直接跳转到小程序某个页面并设置页面数据, 做针对性全面测试 缺点: 暂不支持H5页面的调试; 暂不支持插件内wx接口调用; 3.选型 精选小程序主要是原生页面...,包含了页面需要测试元素测试用例只要关心测试数据即可; 1.目录结构 cases/: 存放测试脚本和用例 case/base/:页面公共方法 case/pages/:页面对象模型 outputs/...XXX" } # 首页点击官方补贴"更多"按钮 subsidy_more_button = ("跳转页面元素选择器XXX", "更多") """ 校验页面路径...id:ID 选择器,自定义给元素唯一 ID,使用时前面跟着 # 号,这是选择单个元素最有效方式。...*_test" } ] } suite.jsonpkglist字段说明要执行用例内容和顺序,pkglist 是一个数组,每个数组元素是一个匹配规则,会根据pkg去匹配包名,找到测试

1.3K40

前端接入单元测试(Node+React)

KarmaKarma 能在真实浏览器测试,强大适配器,可配置其他单测框架,一般会配合 Mocha 或 Jasmine 等一起使用。每个框架都有自己优缺点,没有最好框架,只有最适合框架。...语句覆盖率,它其实对应就是js语法上语句,js解析成ast数类型为 statement 。...、E2E测试 集成测试测试应用不同模块如何集成,如何一起工作。...目的在于,测试经过单元测试各个模块组合在一起是否能正常工作。会对组合之后代码整体暴露在外接口进行测试,查看组合后代码工作是否符合预期。...E2E测试:端到端测试, 聚焦于用户和 web 之间交互,把 web 当作一个黑盒,站在用户角度,模拟用户操作,判断每次操作结果是否符合预期。

3.2K30

前端自动化测试

,改出BUG 一个组件多个页面复用,修改后测试回归任务重 技术选型 目前前端整体测试框架较为常用有: Jest Mocha Jest 源自Facebook,Jest 一个理念是提供一套完整集成...操作变得十分友好 综合目前市面上轮子,我们技术选型为Jest+Enzyme 实践 例子是一个基于Antd二次封装单选年日期选择器,如下演示: 图片 代码结构如下 图片 其中测试相关文件,...在test,后缀名为xxx.test.js文件,在运行测试时会自动执行,snapshots为自动生成页面快照。...这里可以首先简单看一下,Jest+Enzyme基本语法: JestAPI更多着力于定义测试、断言、mock库 定义测试: describe: 定义一个测试套件(test suite) it: 定义一个测试...render: 渲染出最终html,然后利用这个html结构来进行分析处理 一些被渲染组件检索节点方法: find: 通过匹配选择器来检索节点 some: 当至少有一个节点匹配选择器是返回true

1.9K20

使用storybook管理React组件

测试UI组件 4.1 写测试用例原因 找到bug 新修改没有改变已有的接口和功能 将测试用例作为文档 4.2 测试结构 使用storyshots插件来实现,其核心是使用Jest,原理是每次生成一份DOM...结构文档(类似于html源码),可以无痛集成到组件测试。...PS:下次运行Jest时,只有DOM结构上次完全一致测试才会通过,通常会有两种方法来解决这种情况: 找到问题,修复不同; 用新DOM结构替换旧。...4.3 测试交互 storybook交互测试可以使用 Enzyme来模拟用户输入,然后使用Mocha or Jest进行结果测试,storybook又一个专门插件帮助我们集成他们:specifications...4.5 手动测试 再好自动化测试,都和人体验存在差距,所以发布之前还是需要经过人眼测试,因为storybook活文档特点,我们可以直接运行体验UI组件,通过交互操作、knobs插件等来进行全面体验

3.3K20

单元测试

所以,我们测试用例只和传入 Props 以及输出内容 render 函数进行交互就够了。...,找不到元素会报错 queryBy* 用于查询我们希望它不存在元素进行断言,找不到元素返回null findBy* 用于查询需要等待异步元素,不需要使用waitFor包裹 批量选择:getAllBy...DOM树是什么样,在写测试代码前,先通过debug查看当前页面可见元素,再开始查询元素,这会有助于编写测试代码....,会出现报错 这种情况通常是由于在一组测试用例,前一个测试用例没有正确地清理或重置测试环境,导致后续测试无法找到期望元素或状态。...act 使用场景如下: 当你在测试进行 React 组件交互(例如模拟用户点击、输入等)时,可以使用 act 来确保组件在更新后进行正确断言。

17710

【架构师(第二十一篇)】编辑器开发之需求分析和架构设计

需求分析 可能会收获什么 做一个什么样项目才能完成前端瓶颈期突破 如何从需求寻找项目的关键难点,痛点 如何写技术解决方案,以文档形式创造可追溯思考模型 如何进行基础技术选型 多项目复用业务组件库...流程复杂度 git flow 流程,commit 信息 PR review lint 工具,代码规范 单元测试 CI/CD 需求分析 需求文档 项目在线体验 需求分析流程图 项目难点分析 如何实现组件...字体颜色 - 颜色选择器 属性设计伪代码大致如下: 抽象出一些通用函数,在组件完成通用功能,比如点击跳转。...左侧是预设各种组件核版并进行添加。 中间是使用交互手段更新元素值。 右侧是使用表单手段更新元素值。...技术选型方案 语言和基础框架 ts + vue3 脚手架 imooc-cli 测试框架 jest + vue-test-utils 构建工具 webpack + rollup 持续集成 travis UI

1.2K30

Node.js介绍

JavaScript JavaScript(简称js)是一种主要运行于浏览器弱类型动态脚本语言,可以用来实现网页上一些高级功能,如数据验证处理、页面动态效果、定时任务、用户交互、发送/接收服务器端数据等等...,减少页面服务器端不必要频繁交互。...也就是说,这个库意图是基于JavaScript查询查询目标是什么?答案是DOM(文档对象模型)结构Node(节点)。...John Resig发现了一个盲点——css样式应用到页面元素时,是有一套规则,即css选择器,浏览器可以通过css选择器找到匹配元素并将指定样式应用到这些元素上。...3. ajax ajax全称Asynchronous JavaScript and XML(异步JavaScriptXML),是网页无需刷新页面、使用js服务器进行交互一种技术。

1.4K00

一文速学-selenium高阶性能优化技巧

不使用GUI界面也就是我们常见selenium无头模式,适用于不需要交互界面测试,尤其是在不需要与页面交互或不关心可视化内容时。...但缺点也很明显,在 eager 模式下,一些通过 JavaScript 动态生成元素可能尚未完全加载和渲染,导致自动化脚本可能无法这些元素交互,可以先测试一下这种模式,确定无误之后可以再用。...代码优化page_source在代码层面的优化一般都得懂selenium底层运行逻辑,比如解析HTML结构顺序,查询元素逻辑,举个简单例子:我们经常会需要断言页面某个部分包含一些具体文本,下面的语句输出结果是相同...长或复杂路径会增加浏览器解析 DOM 时间,在 XPath 避免使用通配符(*),并尽量不要定位深层次嵌套元素,因为这会增加查询计算负担。...每次 DOM 交互都会消耗时间,尤其是在复杂或大型网页上。因此,尽量减少不必要元素查找和交互。缓存已查找元素对于频繁操作元素,可以将其存储在变量,避免重复查找。

60323
领券