前端从零配置 基于 TypeScript 的 Jest 单元测试环境,手把手教程

写在前面

本教程从零开始而且不是基于一个 Vue 或者 React 框架,打破测试环境配置的心里障碍,如果从零都可以配置成功,上个框架原理和方法也会大差不差。

本教程基于 yarn 来进行安装,如果使用使用 npm 和 pnpm 的话方法类似,无非就是把 yarn 换成 npm 或者 pnpm,yarn add 换成 npm install 或者 pnpm add,最保险的做法就是自行查阅一下这三者的安装区别,应该会很快。

如果你你想直接去 Jest 官网阅读这里贴上:https://jestjs.io/docs/getting-started。直接看我这个教程或者遇到问题再参考我这个教程都可以。

开始安装

直接进入正题,新建文件夹 ts-jest-demo,双击进入文件夹,右键使用 vscode 打开当前文件夹。

  • 打开 terminal 终端默认进入 ts-jest-demo 目录,输入:
yarn init -y
  • 新建 src 文件夹。在 src 文件夹下新建 index.ts,写入:
export function add(a: number, b: number) {return a + b;
}
  • 安装 ts 环境
yarn add typescript --dev
  • 初始化 ts 环境,执行下面命令,自动生成 tsconfig.json 文件
npx tsc --init
  • 在 tsconfig.json 中(ctrl F 搜索 types 配置项,解开注释,并配置:
"types": ["jest"]
  • 安装 jest 并引入 ts 类型文件
yarn add jest @types/jest --dev
  • 安装 jest babel 依赖环境
yarn add --dev babel-jest @babel/core @babel/preset-env
  • 安装 jest babel 下的 ts 环境,用来支持 ts
yarn add --dev @babel/preset-typescript
  • 根目录下创建 babel.config.js,写入并导出配置:
module.exports = {presets: [["@babel/preset-env", { targets: { node: "current" } }],"@babel/preset-typescript"]
};
  • 在 src 目录下新建 tests 文件夹,并新建测试文件 index.test.ts,写入:
import { add } from "../index";//写一个add的测试用例
it("init", () => {expect(add(1, 2)).toBe(3);
});
  • 在 package.json 中配置 scripts 的 test 字段:

"scripts": {"test": "jest"},
  • 这样所有环境都配置完了,最后在终端中执行:
yarn test

如果你是 npm 就是 npm run test,pnpm 的话就是 pnpm test。应该可以看到测试的结果。

有时候 vscode 可能会抽风,爆红提示错误,重启 vscode,重新运行测试指令即可。

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

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

相关文章

【YOLOv5/v7改进系列】引入特征融合网络——ASFYOLO

一、导言 ASF-YOLO结合空间和尺度特征以实现精确且快速的细胞实例分割。在YOLO分割框架的基础上,通过引入尺度序列特征融合(SSFF)模块来增强网络的多尺度信息提取能力,并利用三重特征编码器(TFE)模块融合不同尺度的特征图以增加细节信息。此外&#xff…

信息打点web篇----web后端源码专项收集

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 专栏描述:因为第一遍过信息收集的时候,没怎么把收集做回事 导致后来在实战中,遭遇资产获取少,可渗透点少的痛苦,如今决定 从头来过,全面全方位…

手把手教你实现条纹结构光三维重建(3)——相机投影仪标定

我们都知道,投影仪其实就是个反向相机,如果我们了解双目标定的原理,那么相机和投影仪的标定就不难,关键是我们怎么得到投影仪在图像特征点(比如棋盘格角点)上的像素位置。 投影仪也类似于一个cmos&#xf…

WebSocket实现消息实时通知

参考文档:万字长文,一篇吃透WebSocket:概念、原理、易错常识、动手实践、WebSocket 教程 1 背景 有一个需求,需要实现实时通信的功能,如果有新消息,后端会主动发送请求告知前端有新消息,需要前…

改进YOLOv7 | 在 ELAN 模块中添加【Triplet】【SpatialGroupEnhance】【NAM】【S2】注意力机制 | 附详细结构图

改进 YOLOv7 | 在 ELAN 模块中添加【Triplet】【SpatialGroupEnhance】【NAM】【S2】注意力机制:中文详解 1. 简介 YOLOv7 是目前主流的目标检测算法之一,具有速度快、精度高的特点。但 YOLOv7 的原始模型结构中缺乏注意力机制,导致模型对全…

Matlab基础语法:变量和数据类型,基本运算,矩阵和向量,常用函数,脚本文件

目录 一、变量和数据类型 二、基本运算 三、矩阵和向量 四、常用函数 五、脚本文件 六、总结 一、变量和数据类型 Matlab 支持多种数据类型,包括数值类型、字符类型和逻辑类型。掌握这些基本的变量和数据类型,是我们进行数学建模和计算的基础。 数…

嵌入式软件stm32面试

一、STM32的内核型号有哪些? STM32系列是STMicroelectronics(意法半导体)生产的基于ARM Cortex-M内核的微控制器产品线。这些产品按照不同的内核架构和性能特点分为了主流产品、超低功耗产品和高性能产品。 1.1 主流产品 STM32F0 系列&…

利用sortablejs实现拖拽排序

import Sortable from "sortablejs";created() {//禁止火狐拖拽进行搜索document.body.ondrop function(event){event.preventDefault();event.stopPropagation();}}// 打开对话框的时候调用下openCustomDialog(){this.rowDrop()}// 行拖拽 rowDrop() {this.$nextTi…

Linux工具(包含sudo提权与vim快捷配置)

目录 什么是软件包 查看软件包 如何安装软件 1.官方yum源下载 2.扩展yum源下载 如何卸载软件 补充知识如何将普通用户加入白名单 补充知识rzsz vim编辑器 1.命令模式(进入默认为这个模式)用户所有的输入都会被当成命令 2.插入模式 3.底行模…

SpringCloud Maven多模块项目导包

目录 一、父项目配置 二、配置子项目 三、Maven执行 四、运行Jar包 一、父项目配置 所有父项目均需确保配置了 <packaging>pom</packaging> 因为Maven某人的打包方式是 <packaging>jar</packaging> 二、配置子项目 仅在有SpringBoot启动类的…

Qt Designer 中设置信号与槽,QT5的四种编辑模式

目录 QT5的四种编辑模式 Qt Designer 中设置信号与槽 Qt Designer 中设置信号与槽 QT5的四种编辑模式 在QT5中,特别是在使用Qt Designer进行界面设计时,存在多种编辑模式以满足不同的开发需求。以下是对QT5中四种主要编辑模式的详细解释: 控件编辑模式(Edit Widgets):…

速盾:cdn高防免备案

云计算和互联网技术的发展&#xff0c;带来了无数便利和机遇&#xff0c;但也带来了各种网络安全威胁。网站被黑、DDoS攻击、敏感信息泄露等问题&#xff0c;给企业和个人带来了巨大的损失和风险。因此&#xff0c;保护网络安全成为了当务之急。 CDN&#xff08;Content Deliv…

【PHP项目实战训练】——使用thinkphp框架对数据进行增删改查功能

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

Python网页爬虫爬取豆瓣Top250电影数据——Xpath数据解析

Python网页爬虫爬取豆瓣Top250电影数据——Xpath数据解析 将使用Python网页爬虫爬取豆瓣电影Top250的电影数据&#xff0c;网页解析方法使用xpath。 获取数据后会将数据保存到CSV文件中。一、分析网页&#xff0c;初步获取信息 1.1 查看原页面信息 首先打开豆瓣Top250电影页…

操作系统期末快速复习(概念)

文章目录 第一章&#xff1a;操作系统引论操作系统的目标是什么&#xff1f;分时系统是什么&#xff1f;实时系统是什么&#xff1f;分时系统和实时系统的比较操作系统的基本特征是什么&#xff1f;操作系统的主要功能&#xff1f;***重要第二章&#xff1a;进程管理程序的顺序…

【编译报错】syntax error near unexpected token `(‘

背景&#xff1a; 在android.bp中是这样写的 cflags: ["-DEXPORT__attribute__((visibility(\"default\")))","-D__ANDROID_VNDK__",],想转换成android.mk&#xff1a; LOCAL_CFLAGS : -DEXPORT__attribute__((visibility("default")…

ClassCastException(类转换异常)可能原因和解决方法总结

ClassCastException(类转换异常)可能原因和解决方法总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;ClassCastException是Java中常见的异常之一&#xff0c…

Ant design Vue 表格中显示不同的状态(多条件显示)

比如&#xff1a;后端一个字段有多种状态&#xff1a; 那么后端接口会返回&#xff1a;0 或者 1 或者 2 其中一个&#xff0c;前端需要展示的是对应的文字&#xff0c;像简单的只有两个状态的可以直接在列里面操作&#xff1a; {title: 状态,dataIndex: usable,customRender: …

Windows10任务栏卡顿解决方案

一、重新启动任务资源管理器 右键底部任务栏选择“任务管理器”&#xff1b;按快捷键“CtrlShiftEsc”&#xff1b;搜索框搜索“任务管理器”并单击“打开”&#xff1b;“WinX”打开开始菜单附属菜单&#xff0c;在列表中选择“任务管理器” &#xff1b;按下“ctrlaltdelete”…

网上考试系统设计文档

网上考试系统设计文档 1. 引言 1.1 目的 本设计文档旨在为“网上考试系统”的开发提供详细的指导方案。系统旨在提供一个全面的在线考试平台&#xff0c;支持在线考试、考试管理以及系统设置等功能&#xff0c;以满足教育机构和教师对考试流程的高效管理和优化需求。 1.2 范…