前端单元测试框架 引入说明

1. 背景:

2. 如何选择:

2.1. 流行框架
  • Jest:由Facebook开源的JavaScript测试框架,应用于脸书系以及 ReactJs 系
  • Mocha:适用于 NodeJs 和 浏览器、简易、灵活、有趣的JavaScript 测试框架
  • Jasmine:BDD(行为驱动开发)测试框架,不依赖于browsers、DOM以及JS,适合websites、NodeJs项目
2.2. 性能对比

测试框架

断言

Mock

异步

快照

React友好程度

Jest

默认支持

默认支持

友好

默认支持

Mocha

不支持

不支持

友好

不支持(可配置)

Jasmine

默认支持

默认支持

不友好

默认支持

2.3. 框架选择

选择Jest作为daizong项目的前端单元测试框架

  • Jest是当前最流行的测试框架,尤其在React生态系统中应用广泛
  • 我们项目使用Ant Desgin作为UI组件库,而Ant Desgin它们选择的测试框架是Jest
  • 我们项目使用Umi4作为脚手架,而Umi4对Jest框架具有很好的支持

2.4. 测试库选择

要想对项目里的组件进行单元测试,仅仅Jest是不够的,还需要一款可以提供 DOM API的环境的库,即模拟浏览器环境。这样对组件进行单元测试时,就像真的运行在浏览器上测试。

针对React流行的测试库主要有两个:Enzyme 、React Testing Library

  • React官方推荐使用 React Testing Library 作为测试库
  • Umi4 对 React Testing Library 有更多的支持
  • React Testing Library 更倾向于事件驱动,更偏向模拟用户操作,而 Enzyme 对代码测试是通过控制代码状态来完成的,已逐渐被抛弃

因此,选择React Testing Library 作为测试库

3. 接入项目:

3.1. 小试牛刀

对项目关键字高亮基础组件写单元测试用例

3.1.1. 用例代码

3.1.2. 测试效果
npx jest --watch

3.1.3. 意义体现

单元测试的意义会在修改组件时体现。 上面给组件写了一个正常使用组件的测试用例,如果此时,我们修改组件代码,新增精准匹配,区分大小写的功能再运行测试用例 (不考虑兼容)。

  • 断言错误
  • 快照发生改变

测试用例不通过,证明会影响到原来组件的业务。

3.2. 如何展开

单元测试能保证函数、Hook、组件等代码单元的功能正常,把手动测试变成自动化测试。

但是写单元测试成本还是挺高的,如果代码改动频繁,那手动测试更合适。一些比较稳定的代码,还是有必要写单测的,写一次,自动测试 n 次,收益很大。

3.2.1. 测试目标
  • 核心的基础组件
  • 核心的工具函数
  • 稳定的公共组件
3.2.2. 测试规范
  • 保持测试简洁和明确:每个测试只关注一个行为或功能,避免过于复杂。
  • 使用描述性命名:测试名称应清晰描述其测试的功能或行为。
  • 避免过度模拟:只模拟必要的依赖,保持测试的真实性。

reference:

快速开始 · Jest

Introduction | Testing Library

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/14019.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

有效提升网站流量的SEO技巧分享

内容概要 在数字时代,SEO(搜索引擎优化)已经成为提升网站曝光度和吸引访问者的重要工具。SEO的核心目标是通过优化网站的各个方面,提高在搜索引擎结果页面上的排名,从而获得更多的自然流量。有效的SEO策略能够让您在激…

MacBook不额外安装软件,怎样投屏到安卓手机上?

提起iPhone或MacBook的投屏,人们总会想到airplay功能。但离开了苹果生态,其他品牌的手机电脑就未必配备airplay功能了。 如果想要将MacBook的电脑屏幕共享到安卓手机或平板上,到底要怎样做?需要安装什么软件吗? 不需要…

自定义面板,高效的游戏性能分析利器

为了更有效地聚焦并解决性能问题,UWA报告采用了分模块监控策略,确保每个模块独立成章,各司其职。然而,随着对性能分析需求的不断升级,我们已经意识到,在深入分析某些跨模块的性能瓶颈或优化点时&#xff0c…

2024第四次随堂测验参考答案

从第四次开始答案会以c语言提供&#xff0c;自行了解&#xff0c;学习 6-1 报数 报数游戏是这样的&#xff1a;有n个人围成一圈&#xff0c;按顺序从1到n编好号。从第一个人开始报数&#xff0c;报到m&#xff08;<n&#xff09;的人退出圈子&#xff1b;下一个人从1开始报…

CTF杂项基本题目思路(图片文件隐写-压缩文件-流量取证)

一、文件隐写 1.当遇到文件类型未知的文件时怎么办&#xff1f; ①linux系统可以使用file命令查看文件的类型&#xff0c;格式&#xff1a;file 文件名 ②使用winhex或者010editor查看文件头&#xff0c;从而判断文件的类型&#xff0c;①中file命令的本质也是查看文件的文件…

sa-token使用及与spring-security的对比

sa-token相关资料地址 官网: https://sa-token.cc/ gitee: https://gitee.com/dromara/sa-token github: https://github.com/dromara/sa-token 快速开始: https://sa-token.cc/doc.html#/ sa-token典型应用 这里我直接拿SpringBoot_v2&#xff08;springboot的开源后台脚手…

MySQL:left join后用on与where的区别

一、前言 前几天项目中&#xff0c;写SQL时本想通过 A left B join on and 后面的条件来使查出的两条记录变成一条&#xff0c;奈何发现还是有两条。在此记录一下&#xff0c;on与where的区别。 二、ON 原始数据展示 SELECT t1.*,t2.* FROM t_test_staff t1 left join t_te…

ANX9833FN-AA-R ANX9833 ANALOGIX QFN48 VGA视频转换器件

ANX9833概述:ANX9833是VGA显示接口适配器集成电路设计一个显示端口1.2/1.1源连接到一个VGA显示。与芯片上的单片机和记忆,ANX9833不需要任何外部配置或设置。它自动引导VGA显示接口适配器的输出,有效地处理所有类型的遗产显示器、投影仪,和电视。ANX9833提供Gbps带宽在两车道到…

2025全平台短剧系统 : 快手、抖音、微信全覆盖

之前&#xff0c;我曾详细阐述过公司短剧系统的一些功能&#xff0c;它们共同构建了一个全面、高效的短剧制作与运营平台。这些功能&#xff0c;无论是媒资管理、剧场设定&#xff0c;还是后期运营&#xff0c;都是经过深思熟虑、精心设计的&#xff0c;是一个成熟的短剧系统所…

机圈白刃战,vivo聚势成风

金秋十月&#xff0c;国产手机市场进入了空前激烈的竞争局势&#xff0c;几乎每天都有发布会&#xff0c;甚至隔段时间就有新机话题登上热搜。网友戏称&#xff0c;发布会密度高到“工作日都不够用了”。 10月14日&#xff0c;vivo X200系列率先登场&#xff0c;拉开了国产旗舰…

scp 或 ssh 报错no matching host key type found. Their offer: ssh-rsa 解决方案

报错如下&#xff1a; 解决方案&#xff1a; 在 scp 或 ssh 命令后面增加参数&#xff1a; -o HostKeyAlgorithmsssh-rsa 可以解决此问题&#xff0c; scp格式如下&#xff1a; scp -o HostKeyAlgorithmsssh-rsa [local_file_path] [user][hosts]:[remote_path]

ElasticSearch概述

ElasticSearch概述 Elaticsearch&#xff0c;简称为es&#xff0c; es是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数据。es也使用Java开发并使…

一文彻底了解UDHCP源码核心☝️

&#x1f344;参考学习: udhcp源码剖析&#xff08;一&#xff09;——DHCP服务器和客户端的工作流程_udhcpc源码v1.29.2-CSDN博客 前言介绍 本文深入探讨了DHCP服务器和客户端的工作流程&#xff0c;以udhcp为例&#xff0c;详细阐述了udhcpd&#xff08;服务器&#xff09;…

开启鸿蒙开发之旅:静态页面搭建

写在前面 了解了一些常用的系统组件及其属性之后&#xff0c;我准备开始搭建我第一个页面&#xff0c;本次鸿蒙Next初体验我准备模仿这款“提醒事项”APP&#xff0c;从页面搭建到基本功能实现。今天从入口页开始&#xff1a; 布局思路 整体结构 从该页面的整体布局结构来看&…

C++20 STL CookBook 7 Containers(II)

让vector在插入删除的时候仍然保证是有序的 首先&#xff0c;STL的确提供了一种办法来检查我们的目标容器是不是有序的&#xff1a;std::is_sorted - cppreference.com&#xff0c;也就是std::is_sorted。我们当然可以这样做&#xff1a; #include <iostream> #include…

二叉树搜索树(下)

二叉树搜索树&#xff08;下&#xff09; 二叉搜索树key和key/value使用场景 key搜索场景 只有key作为关键码&#xff0c;结构中只需要存储key即可&#xff0c;关键码即为需要搜索到的值&#xff0c;搜索场景只需要判断 key在不在。key的搜索场景实现的二叉树搜索树支持增删查…

人力资源招聘系统-提升招聘效率与质量的关键工具

在当今这个竞争激烈的商业环境中&#xff0c;企业要想在市场中立于不败之地&#xff0c;关键在于拥有高素质的人才队伍。然而&#xff0c;传统的招聘方式往往效率低下&#xff0c;难以精准匹配企业需求与人才特质&#xff0c;这无疑给企业的发展带来了不小的挑战。 随着科技的飞…

【C++】类中的“默认成员函数“--构造、析构、赋值

目录 概念引入&#xff1a; 一、构造函数 问题引入&#xff1a; 1&#xff09;构造函数的概念 2&#xff09;构造函数的特性 二、析构函数 1&#xff09;析构函数概念 2&#xff09;析构函数特性 三、拷贝构造函数 1)拷贝构造函数概念 示例代码&#xff1a; 2)深拷…

环丙烷环辛炔聚乙二醇磷脂,淡黄色固体,BCN-PEG-DSPE

中文名称&#xff1a;环丙烷环辛炔聚乙二醇磷脂 英文名称&#xff1a;BCN-PEG-DSPE 外观&#xff1a;通常为黄色或淡黄色固体 材料来源&#xff1a;为华生物 溶解性&#xff1a;在有机溶剂&#xff08;如氯仿、乙醇&#xff09;中具有良好的溶解性&#xff0c;而在水中的溶…

202409电子学会青少年机器人技术等级考试(六级)理论综合真题

青少年机器人技术等级考试理论综合试卷&#xff08;六级&#xff09; 分数&#xff1a; 100 题数&#xff1a; 30 一、 单选题(共 20 题&#xff0c; 共 80 分) 1. 使用 ESP32 for Arduino SPI 类库&#xff0c; 下列选项中&#xff0c; 具有设置时钟模式功能的成员函数是&…