前端自动化测试-Jest

前端自动化测试

Jest官网:https://jestjs.io

安装方式

npm install --save-dev jest
yarn add --dev jest
cnpm add --save-dev jest

使用方法

在这里插入图片描述
所有以 .test.js 结尾的都是测试文件

基础用法示例

num.js:

export function getSum (a, b) {return a + b
}

num.test.js:

import { getSum } from './num'test('功能', () => {expect(getSum(1, 2)).toBe(3)expect(getSum(3, 2)).toBe(5)expect(getSum(3, 4)).toBe(7)
})

运行test测试脚本后结果:
成功时:
在这里插入图片描述
报错时:

当有很多测试用例时,只想测某一个时

test.only('B 功能', () => {expect(getSum(2, 4)).toBe(6)
})

在这里插入图片描述

一些常用断言

test.only('C 功能', () => {expect(getSum(2, 4)).toBe(6) // 等于expect({ name: 'jack' }).toEqual({ name: 'jack' }) // 对象可以看到的部分是否一致expect('ababc').toMatch(/bab/) // 字符串匹配expect(4).toBeGreaterThan(3) // 大于expect(4).toBeGreaterThanOrEqual(3) // 大于等于expect(3).toBeLessThanOrEqual(5) // 小于expect(3).toBeLessThanOrEqualOrEqual(5) // 小于等于
})

方法层面的细致测试

describe('模块A', () => {test('A 功能', () => {console.log('A 功能')expect(getSum(1, 2)).toBe(3)})test('B 功能', () => {console.log('B 功能')expect(getSum(1, 2)).toBe(3)})
})
describe('模块B', () => {test('C 功能', () => {console.log('C 功能')expect(getSum(1, 2)).toBe(3)})test('D 功能', () => {console.log('D 功能')expect(getSum(1, 2)).toBe(3)})
})

在这里插入图片描述

package.json配置

在script下添加 test配置:

"scripts": {"test": "jest"}

配置Jest —— jest.config

npx jest --init

在这里插入图片描述
1.需不需要用ts生成文件
2.测试环境是什么:jsdom | node
3.是否添加覆盖率报告
4.代码覆盖采用形式:v8 | babel
5.是否需要清除每次模拟的数据

默认识别测试文件:

   testMatch: ["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],

__tests__文件夹内的js或ts 或
.spec 或 .test 的js 或ts

希望忽略的一些目录

  coveragePathIgnorePatterns: ["\\\\node_modules\\\\"],

热启动

package.json配置

"scripts": {"test": "jest --watchAll" }

关于Jest中使用babel处理es6转es5

补充相关依赖(babel-jest的套件、babel核心功能、babel运行环境):

yarn add --dev babel-jest @babel/core @babel/preset-env

配置babel.config.js

module.exports = {presets: [['@babel/preset-env',{targets: {node: 'current'}}]]
}

生命周期

beforeAll(() => {console.log('当前测试模块执行前触发')
})beforeEach(() => {console.log('每次测试前执行')
})afterAll(() => {console.log('当前测试模块执行后触发')
})afterEach(() => {console.log('每次测试后执行')
})

—————— 未完待续 ——————

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java下载网络上的文件、图片保存到本地 FileUtils

java下载网络上的文件、图片保存到本地 FileUtils 1. 引入FileUtils依赖2. 实现代码3. 输出结果 1. 引入FileUtils依赖 <!--FileUtils依赖--> <!-- https://mvnrepository.com/artifact/commons-io/commons-io --> <dependency><groupId>commons-io&l…

手把手教你从零搭建ChatGPT网站AI绘画系统,(SparkAi系统V6)GPTs应用、DALL-E3文生图、AI换脸、垫图混图、SunoAI音乐生成

一、系统前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持…

智能Java开发工具IntelliJ IDEA v2024.1震撼发布——让开发工作更简单!

IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 立…

必须掌握的这4种缓存模式

概述 在系统架构中&#xff0c;缓存可谓提供系统性能的简单方法之一&#xff0c;稍微有点开发经验的同学必然会与缓存打过交道&#xff0c;起码也实践过。 如果使用得当&#xff0c;缓存可以减少响应时间、减少数据库负载以及节省成本。但如果缓存使用不当&#xff0c;则可能…

java 邮件发送表格

邮件发送表格 问题导入效果图 实现方案1. 拼接HTML文件&#xff08;不推荐&#xff09;2. excel 转HTML使用工具类来转化依赖工具类代码示例 使用已工具包 如 aspose-cells依赖代码示例 3.使用模板生成流程准备模板工具类代码示例 问题导入 在一些定时任务中&#xff0c;经常会…

【STM32G431RBTx】备战蓝桥杯嵌入式→省赛试题→第十四届

文章目录 前言一、题目二、模块初始化三、代码实现interrupt.h:interrupt.c:main.h:main.c: 四、完成效果五、总结 前言 无 一、题目 二、模块初始化 1.LCD这里不用配置&#xff0c;直接使用提供的资源包就行 2.KEY, 四个按键IO口都要配置&#xff0c;分别是PB0, PB1,PB2,PA…

Unity单个物体绑定多个相机在轨道上移动,录制不同角度视频

环境搭建 下载Cinemachine插件安装 打开包管理器 下载cinemachine插件 创建轨道 使用dolly track 创建轨道 右侧可以删减关键点&#xff0c;注意调整y坐标 创建cart 把前面的轨道拖到path中&#xff0c;注意这里的speed要设定不为0才会动 设置VItual Camera 根据需…

使用Code开发Django_模版和CSS

转到定义 和 查看定义 在使用Django或任何其他库的过程中,我们可能需要检查这些库中的代码。VS Code提供了两个方便的命令,可以直接导航到任何代码中的类和其他对象的定义: 转到定义 在Python开发环境中,我们可以轻松地对函数、类或者其他导入模块中的成员使用“Go to Def…

【C 数据结构】双向链表

文章目录 【 1. 基本原理 】【 2. 双向链表的 创建 】实例 - 输出双向链表 【 3. 双向链表 添加节点 】【 4. 双向链表 删除节点 】【 5. 双向链表查找节点 】【 7. 双向链表更改节点 】【 8. 实例 - 双向链表的 增删查改 】 【 1. 基本原理 】 表中各节点中都只包含一个指针&…

【算法练习】30:快速排序学习笔记

一、快速排序的算法思想 原理&#xff1a;快速排序基于分治策略。它的基本思想是选择一个元素作为“基准”&#xff0c;将待排序序列划分为两个子序列&#xff0c;使得左边的子序列中的所有元素都小于基准&#xff0c;右边的子序列中的所有元素都大于基准。这个划分操作被称为分…

Elasticsearch部署安装

环境准备 Anolis OS 8 Firewall关闭状态&#xff0c;端口自行处理 Elasticsearch&#xff1a;7.16.1&#xff08;该版本需要jdk11&#xff09; JDK&#xff1a;11.0.19 JDK # 解压 tar -zxvf jdk-11.0.19_linux-x64_bin.tar.gz# 编辑/etc/profile vim /etc/profile# 加入如下…

Halcon颜色抽取-多产品颜色(MLP)

前言 //颜色抽取&#xff0c;单产品多区域 https://blog.csdn.net/m0_51559565/article/details/135216905由于在颜色抽取上面&#xff0c;我已经发了一篇博客了&#xff0c;是单产品多区域的情况。所以对于细分原理上就不过多的描述了。 本文主要是针对多产品多颜色的情况进行…

模型训练-保存训练数据

1.目的 找到一个可运行的代码&#xff0c;可以每个epoch打印训练数据&#xff0c;但是不会保存。因为在改进模型需要这些训练数据进行对比&#xff0c;所以需要将每个epoch的训练数据保存下来&#xff0c;写到一个文件中。 2.解决方案 直接问ChatGPT&#xff0c;提示词如下&…

SpringMVC原理及工作流程

组件 SpringMVC的原理主要基于它的各个组件之间的相互协作交互&#xff0c;从而实现了Web请求的接收&#xff0c;处理和响应。 它的组件有如下几个&#xff1a; DispatcherServlet前端控制器 HandlerMapping处理器映射器 Controller处理器 ModelAndView ViewResolver视图…

练习题(2024/4/11)

1每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例 1: 输入…

Leetcode刷题之消失的数字(C语言版)

Leetcode刷题之消失的数字&#xff08;C语言版&#xff09; 一、题目描述二、题目解析 一、题目描述 数组nums包含从0到n的所有整数&#xff0c;但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗&#xff1f; 注意&#xff1a;本题相对书上原题稍作…

Java中实现监听UDP协议的指定端口并收到数据按照十六进制输出

场景 对接协议中需要监听UDP协议的指定端口并监听数据&#xff0c;且数据格式为十六进制。 如果是在linux服务上&#xff0c;可以快速通过C或者python脚本等方式实现。 这里使用Java代码实现&#xff0c;可便于后续做其他存储数据等的扩展&#xff0c;且只需要在服务器上安装…

华为OD七日集训第6期 - 按算法分类,由易到难,循序渐进,玩转OD

目录 一、适合人群二、本期训练时间三、如何参加四、七日集训第 6 期五、精心挑选21道高频经典题目&#xff0c;作为入门。第1天、逻辑分析第2天、双指针第3天、滑动窗口第4天、二叉树第5天、矩阵第6天、分治递归第7天、深度优先搜索 大家好&#xff0c;我是哪吒。 最近一直在…

《安静的力量》探寻自我的心灵之旅,找到内心的宁静和真正的幸福 - 三余书屋 3ysw.net

安静的力量&#xff1a;通往止境的冒险 大家好&#xff0c;今天我们要解读的书籍是《安静的力量》。让我们先设想一个画面&#xff1a;在纽约曼哈顿&#xff0c;紧邻繁华的时代广场&#xff0c;一位29岁的青年在他的公寓里工作。这里毗邻纽约最富有人群的聚居区&#xff0c;而…

Windows Edge 兼容性问题修复:提升用户体验的关键步骤

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…