全球观热点:@testing-library/react: 测试你的 React 组件

@testing-library 是一系列建立在 DOM Testing Library(@testing-library/dom)基础上的包的集合。用来测试 UI 组件,不鼓励测试实现细节(比如组件内部状态、方法甚至声明周期),而是鼓励从用户使用的角度进行测试。

作为初级教程,篇幅有效,本文只讨论 @testing-library/react 的使用,有其他需求的同学,可以查阅对应框架的使用文档。


(资料图片)

官网地址:/docs/react-testing-library/intro

repo 地址:/testing-library/react-testing-library

@testing-library/react

React Testing Library 在 DOM Testing Library 的基础上构建,通过添加用于处理 React 组件的 API 来增强功能。

为了避免测试组件实现细节,而是专注于以组件使用的方式进行测试,从而方便理解与对组件重构(实现方式变化但功能不变)。@testing-library/react基于 react-domreact-dom/test-utils提供了一些轻量级的工具函数。

另外,@testing-library/react视 Jest 为一等公民,所以默认跟 Jest 配合很好。不过也能自定义使用其他测试框架。

项目准备

Create React App  对 React Testing Library 提供了开箱支持,不过由于各种原因,React 官方文档已不再提及,所以我们使用 来整合 @testing-library/react

从 12 开始已经内置了 Jest 支持,配置起来非常简单。首先安装依赖:

jest-environment-jsdom:Jest 的默认环境是 环境。如果正在构建 Web 应用程序,可以使用 jsdom 来代替浏览器类似的环境。要开始使用 JSDOM 测试环境,如果尚未安装,则必须安装 jest-environment-jsdom 软件包

@testing-library/jest-dom:提供了一组自定义的 jest 匹配器,你可以使用它们来扩展 jest。比如:.toBeInTheDocument()

方便起见,只需在测试设置文件(tests setup file)中导入@testing-library/jest-dom,你就可以开始使用了:

在你的项目根目录下创建一个 文件,并添加以下内容:

在幕后,next/jest会自动为你配置 Jest,包括:

使用 SWC 设置 transform

自动 Mock 样式表(.css.及其 scss 变体)、图像导入和 next/font

.env(及所有变体)加载到

从测试解析(test resolving)和 transforms 中忽略 node_modules

从测试解析中忽略 .next

加载 ,寻找启用 SWC transforms 的标志

创建测试文件

文件中添加 test脚本

创建第一个测试文件

你的项目现在已准备好运行测试。按照 Jest 的惯例,在项目根目录下添加 __tests__文件夹以进行测试。

例如,我们可以添加一个测试来检查 <Home />组件是否成功渲染标题:

可选地,添加一个快照测试来跟踪您的 <Home />组件中的任何意外更改:

执行测试

运行 npm run test来执行测试套件。在你的测试通过或失败后,你会注意到一系列交互式 Jest 命令列表,这些命令将有助于你添加更多的测试。

其他案例

案例一:render/userEvent/screen

完整代码看这里 /docs/react-testing-library/example-intro/#full-example。

案例二:render

案例三:renderHook

注意:@testing-library/react 才增加 renderHookAPI 的支持,而且还限定在 React18。  如果你的项目使用 React17-,那么最高只能安装 版本,测试 React Hook 的话,需要借助 @testing-library/react-hooks库的帮助。

完整 API 及其他资源

完整 API

由于 @testing-library/react是基于 @testing-library/dom的封装,re-export 了 @testing-library/domAPI。因此完整 API 要同时参考 @testing-library/react 的拓展 API(renderrenderHook等)和 @testing-library/dom API。

其他资源

Jest 文档:/docs/getting-started

React Testing Library:/docs/react-testing-library/intro/

Testing Playground(/) - 如果你不知道该使用什么 API 选择页面元素,可以参考这里的官方推荐

关键词 :

全球观热点:@testing-library/react: 测试你的 React 组件

@testing-library是一系列建立在DOMTestingLibrary(@testing-library

哔哩哔哩 06-26 19:07:37

全球观热点:@testing-library/react: 测试你的 React 组件

@testing-library是一系列建立在DOMTestingLibrary(@testing-library

哔哩哔哩 06-26 19:07:37

浦东新区与海通证券签署战略合作协议

据海通证券消息,6月26日,浦东新区与海通证券签署战略合作协议。浦东

云财经 06-26 18:44:13

浦东新区与海通证券签署战略合作协议

据海通证券消息,6月26日,浦东新区与海通证券签署战略合作协议。浦东

云财经 06-26 18:44:13

你一定要幸福何洁现场版_你一定要幸福 2006年何洁演唱歌曲相关内容简介介绍

《你一定要幸福》是中国内地女歌手何洁演唱的一首情歌,由唐恬作词,吴

互联网 06-26 18:47:40

你一定要幸福何洁现场版_你一定要幸福 2006年何洁演唱歌曲相关内容简介介绍

《你一定要幸福》是中国内地女歌手何洁演唱的一首情歌,由唐恬作词,吴

互联网 06-26 18:47:40

信息:信用卡没有停息挂账的业务怎么办?哪些银行可以停息挂账?

信用卡没有停息挂账的业务怎么办信用卡如果不给办理停息挂账,客户

财报网 06-26 18:55:23

信息:信用卡没有停息挂账的业务怎么办?哪些银行可以停息挂账?

信用卡没有停息挂账的业务怎么办信用卡如果不给办理停息挂账,客户

财报网 06-26 18:55:23

【全球新要闻】安庆红水塘社区:“快乐健身”暖民心

为积极引导群众快乐健身,安庆市大观区十里铺乡红水塘社区坚持以人为本

安徽经济网 06-26 18:44:09

【全球新要闻】安庆红水塘社区:“快乐健身”暖民心

为积极引导群众快乐健身,安庆市大观区十里铺乡红水塘社区坚持以人为本

安徽经济网 06-26 18:44:09

小新Talkshow丨国际禁毒日:擦亮双眼,警钟长鸣 环球头条

你知道吗?近年来,毒品种类层出不穷,花样繁多。你钟爱的肥宅快乐水已

中国新闻网 06-26 18:48:41

小新Talkshow丨国际禁毒日:擦亮双眼,警钟长鸣 环球头条

你知道吗?近年来,毒品种类层出不穷,花样繁多。你钟爱的肥宅快乐水已

中国新闻网 06-26 18:48:41

自考和成考的区别是什么?哪个好?

“你觉得成人高考有什么用?”我想每个自考的人都会有这样的疑问,最近

哔哩哔哩 06-26 18:24:25

自考和成考的区别是什么?哪个好?

“你觉得成人高考有什么用?”我想每个自考的人都会有这样的疑问,最近

哔哩哔哩 06-26 18:24:25

行业顶流配置,无愧旗舰轻客,江铃福特新款轻客曝光

传承近60年造车文化的江铃福特,始终在轻客市场引领行业发展,更是

今日热点网 06-26 18:34:14

行业顶流配置,无愧旗舰轻客,江铃福特新款轻客曝光

传承近60年造车文化的江铃福特,始终在轻客市场引领行业发展,更是

今日热点网 06-26 18:34:14

神马股份:拟1.48亿元增资控股子公司神马普利

金融界6月26日消息神马股份公告,公司拟与中国平煤神马集团尼龙科技有

金融界 06-26 18:14:05

神马股份:拟1.48亿元增资控股子公司神马普利

金融界6月26日消息神马股份公告,公司拟与中国平煤神马集团尼龙科技有

金融界 06-26 18:14:05

2023我国粮食仓储设备行业现状规模

全国标准粮食仓库完好仓容近7亿吨,仓储条件总体达到世界先进水平,粮

新浪 06-26 18:03:35

2023我国粮食仓储设备行业现状规模

全国标准粮食仓库完好仓容近7亿吨,仓储条件总体达到世界先进水平,粮

新浪 06-26 18:03:35

我国数控机床产业规模与市场需求_新动态

数控机床是由系统程序控制的自动化机床,相比传统机床,可以加工出更复杂

新浪 06-26 18:08:52

我国数控机床产业规模与市场需求_新动态

数控机床是由系统程序控制的自动化机床,相比传统机床,可以加工出更复杂

新浪 06-26 18:08:52

天天热推荐:2023中国智能音箱市场消费趋势调查

2023年第一季度,中国整体音箱线上公开零售市场(不含抖音等内容电商)的

新浪 06-26 18:12:07

天天热推荐:2023中国智能音箱市场消费趋势调查

2023年第一季度,中国整体音箱线上公开零售市场(不含抖音等内容电商)的

新浪 06-26 18:12:07

我国的液压行业起步较晚 液压行业市场现状分析

20世纪以来,以工程机械、冶金机械、矿山机械、农业机械、航空航天、智

互联网 06-26 18:07:53

我国的液压行业起步较晚 液压行业市场现状分析

20世纪以来,以工程机械、冶金机械、矿山机械、农业机械、航空航天、智

互联网 06-26 18:07:53

【全球速看料】海洋新兴产业保持较快增长势头 2023海洋工程行业投资前景及发展态势

海洋油气资源开发装备是目前海洋工程装备的主体,包括各类钻井平台、生

新浪 06-26 18:10:30

【全球速看料】海洋新兴产业保持较快增长势头 2023海洋工程行业投资前景及发展态势

海洋油气资源开发装备是目前海洋工程装备的主体,包括各类钻井平台、生

新浪 06-26 18:10:30

天天热头条丨夤夜苞苴是什么意思 夤夜苞苴的意思

hello大家好,我是城乡经济网小晟来为大家解答以上问题,夤夜苞苴是什

互联网 06-26 18:09:28

天天热头条丨夤夜苞苴是什么意思 夤夜苞苴的意思

hello大家好,我是城乡经济网小晟来为大家解答以上问题,夤夜苞苴是什

互联网 06-26 18:09:28

济宁兖州区鼓楼街道党工委开展党性教育活动

活动现场大众网记者侯畅通讯员刘聪济宁报道6月24日,济宁兖州区鼓楼街

大众网 06-26 18:08:53

济宁兖州区鼓楼街道党工委开展党性教育活动

活动现场大众网记者侯畅通讯员刘聪济宁报道6月24日,济宁兖州区鼓楼街

大众网 06-26 18:08:53

世界聚焦:铁西区中央大街社区举办红歌红舞展演活动

“这场红歌红舞表演让我感受到了红色传承的魅力,红色一直在我身边!”

二三里资讯 06-26 18:13:08

世界聚焦:铁西区中央大街社区举办红歌红舞展演活动

“这场红歌红舞表演让我感受到了红色传承的魅力,红色一直在我身边!”

二三里资讯 06-26 18:13:08

球员动态: 史伟达探望恩师 秦超赴义乌参赛 杨茹筹备璟点台球俱乐部

作为一名中式台球运动员,大多数时间不是在比赛,就是在去比赛的路上。

新传在线 06-26 18:08:21

球员动态: 史伟达探望恩师 秦超赴义乌参赛 杨茹筹备璟点台球俱乐部

作为一名中式台球运动员,大多数时间不是在比赛,就是在去比赛的路上。

新传在线 06-26 18:08:21

抖音消失的她表情包大全

消失的她是前段时间刚上线的一部电影,由于剧情比较引起网友的共鸣因此

系统乐园 06-26 17:55:27

抖音消失的她表情包大全

消失的她是前段时间刚上线的一部电影,由于剧情比较引起网友的共鸣因此

系统乐园 06-26 17:55:27

消失的她翻拍的哪个电影 消失的她故事原型介绍 天天快播报

消失的她是一部紧张刺激、反转不断的悬疑犯罪片,大家知道是翻拍自哪部

互联网 06-26 17:54:41

消失的她翻拍的哪个电影 消失的她故事原型介绍 天天快播报

消失的她是一部紧张刺激、反转不断的悬疑犯罪片,大家知道是翻拍自哪部

互联网 06-26 17:54:41

联系我们:55 16 53 8@qq.com
关于我们| 联系方式| 版权声明| 供稿服务| 友情链接

经济头条 版权所有,未经书面授权禁止使用

京ICP备2021034106号-7 营业执照公示信息

Copyright©2008-2020 By www.jingji.net All Rights Reserved