用jest做单元测试不得不知道的起手式配置,闭坑指南

news2024/11/8 9:56:16

做单元测试有很多的工具,今天在一个老项目中看到的用的工具是用的jest做的单元测试,特尝试更新下,遇到不少的问题。

相关依赖配置文件

在这里插入图片描述

npm install --save-dev jest
  • package.json
{
  "name": "jest-app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "jest"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.26.0",
    "@babel/preset-env": "^7.26.0",
    "@babel/preset-typescript": "^7.26.0",
    "babel-jest": "^29.7.0",
    "jest": "^29.7.0",
    "jest-environment-jsdom": "^29.7.0",
    "ts-jest": "^29.2.5",
    "ts-node": "^10.9.2",
    "typescript": "^5.6.3"
  },
  "dependencies": {
    "tslib": "^2.8.0"
  }
}
  • tsconfig.json
{
  "compileOnSave": true,
  "compilerOptions": {
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "experimentalDecorators": true,
    "esModuleInterop": true,
    "importHelpers": true,
    "declaration": true,
    "outDir": "./dist",
    "sourceMap": true,
    "baseUrl": "./",
    "allowSyntheticDefaultImports": true,
    "paths": {
      "@/*": ["./src/*"],
      "tslib": ["node_modules/tslib/tslib.d.js"]
    },
    "target": "es5",
    "lib": ["DOM", "ESNext"]
  },
  "include": ["src/**/*"]
}

生成基础配置文件

npm init jest@latest
  • jest.config.js
module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  transform: {
    '^.+\\.tsx?$': 'ts-jest',
    '^.+\\.jsx?$': 'babel-jest' // 使用 babel-jest 进行转换
  },
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node']
  // 添加其他 Jest 配置
}

使用 Babel

要使用esm语法,必须配置babel,否则会报错

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

报错:This syntax requires an imported helper but module ‘tslib‘ cannot be found

解决方案如下:
1、安装tslib

npm install tslib

2、tsconfig.json中"compilerOptions"选项下新增“baseUrl”及“paths”配置

"baseUrl":".",
"paths": {
  "tslib" : ["node_modules/tslib/tslib.d.ts"]
}
  • .src/index.ts
export * from './array'
  • array.ts
export function sum(a: number, b: number): number {
  return a + b
}
  • 测试用例src/test/index.test.js,运行jest命令会自动搜索测试文件名xxx.test.js包含test的文件里面的内容
import { sum } from '../index'

test('adds 1 + 2 to equal 4 ', () => {
  expect(sum(1, 2)).toBe(4)
})

test('adds 1 + 2 to equal 3 ', () => {
  expect(sum(1, 2)).toBe(3)
})

逐个运行测试
请添加图片描述
一般都是命令行运行
请添加图片描述

附件

源码地址:https://gitee.com/motain/jest-app

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

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

相关文章

【Android】多渠道打包配置

目录 简介打包配置签名配置渠道配置配置打包出来的App名称正式包与测试包配置 打包方式开发工具打包命令行打包 优缺点 简介 多渠道打包 是指在打包一个 Android 应用时,一次编译生成多个 APK 文件,每个 APK 文件针对一个特定的渠道。不同的渠道可能代表…

Linux初学者导引:掌握主要命令与操作系统基础(第一天)

本文使用的工具:CentOS。 1.打开终端: 鼠标单击右键,选择“在终端打开(E)”选项。 2.命令行基础 常用命令: (1)ls:列出目录内容 列出当前目录或指定目录中的文件和文件夹。 基本用法:ls常…

块设备驱动的基本概念

块设备与字符设备 块设备只能以块为单位接收输入和返回输出,而字符设备则以字节为单位。大多数设备是字符设备,因为它们不需要缓冲而且不以固定块大小进行操作;字符设备只能被顺序读写,而块设备可以随机访问。 块设备对于I/O请求…

【力扣 + 牛客 | SQL题 | 每日4题】牛客大厂面试真题W3,W10

1. 牛客大厂面试真题SQLW3:分析客户逾期情况 1.1 题目: 描述 有贷款信息表:loan_tb(agreement_id:合同id,customer_id:客户id,loan_amount:贷款金额,pay_a…

python 写web前端的库

Gradio vs Streamlit vs Dash vs Flask几款的对比 Gradio:Gradio 是专门为机器学习模型构建的。因此,如果您想专门为您构建的机器学习模型创建一个 Web UI,Gradio 的简单语法和设置是您的不二之选。 Streamlit:如果您想快速启动和…

Ubuntu系统安装软件

在Linux系统中有四种软件安装方式:rpm、yum、apt、编译安装 编译安装 编译安装只有一个源码包,源码包是由一大堆源代码程序组成的,是由程序员按照特定格式和语法编写好了,现成的安装包 程序:未执行的代码 进程&#…

Halcon 多相机统一坐标系(标定)

多相机统一坐标系是指将多个不同位置的相机的图像采集到同一个坐标系下进行处理和分析的方法。 在计算机视觉和机器视觉领域中,多相机统一坐标系被广泛应用于三维重建、立体视觉、目标跟踪等任务中。 以gen_binocular_rectification_map(生成描述图像映…

【libGL error】Autodl云服务器配置ACT的conda虚拟环境生成训练数据时,遇到了libGL相关错误,涉及swrast_dri.so

问题与解决方案 1. libGL error: MESA-LOADER: failed to open iris conda install -c conda-forge libstdcxx-ng来源suffix _dri 下面的问题是在Autodl云服务器上运行程序是出现的,在Ubuntu笔记本上安装的Anaconda没有出现以下问题。 Autodl云服务器安装的是Mi…

逆变器竞品分析--绿联150W方案【2024/10/30】

绿联这款车载逆变器具备两个AC输出插座,支持150W输出功率。1A1C快充接口支持30W输出功率,可以同时为四台设备供电。逆变器采用车充输入供电,自带1.3米输入线,逆变器内置数显屏幕,能够实时显示工作状态,时刻…

LeetCode 热题 100之链表3

1.k个一组翻转链表 思路分析:我们需要将链表分成若干个长度为 k 的子链表组,逐组进行翻转。若最后一组节点的数量不足 k,则保持原有顺序 创建一个虚拟头节点 dummy,以简化边界条件的处理。该节点的 next 指向链表的头节点。通过 d…

Redis慢查询分析优化

文章目录 一、定义二、慢查询参数配置三、慢查询日志四、排查步骤五、Redis变慢原因 一、定义 在Redis执行时耗时超过某个阈值的命令,称为慢查询。 慢查询日志帮助开发和运维人员定位系统存在的慢操作。慢查询日志就是系统在命令执行前后计算每条命令的执行时间&…

接口自动化测试平台项目环境搭建

这篇文章主要记录开发接口自动化测试平台的尝试作---环境搭建和写一个项目管理模型。 电脑需要有python环境,且已经安装了django,我用的是python3.12 和 django 最新版本。写代码我使用的pycharm。 其中环境搭建大概分下面几步: 一、在代码…

Oracle OCP认证考试考点详解082系列06

题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 26. 第26题: 题目 解析及答案: 关于间隔(INTERVAL)数据类型,以下哪两个陈述是…

python的数据结构列表方法及扩展(栈和队列)

python的数据结构 python的list方法 list.append() 添加一个元素到列表末尾。list,append(num)相当于a[len(a):] [num] a [1,2,3,4,5] a.append(6) print(a) a[len(a):] [7] print(a)list.extend() 添加指定列表的所有元素。list.extend(nums)相当于a a nums a [1,2,3]…

highcharts的datalabels标签格式化

Highcharts的数据标签格式化 代码如下 plotOptions: {series: {dataLabels: {enabled: true,format: {y:.2f} mm}} },y就是当前数据点的值,.2f代表2位小数,效果如下图

如何安装自动化测试工具katalon?

一、下载,最下面有免费的版本 Katalon Studio 免费下载 |卡塔隆 二、安装 第一次安装,需要输入注册信息,注册成功之后,就可以使用了。

从简单的demo开始让您逐步了解GetX的用法

目录 前言 一、从demo开始体现下Getx的用法 二、从最简单的功能开始 1.新建一个Flutter工程 2.GetX初体验 1.路由跳转 1.普通路由跳转 2.跳转并从堆栈中销毁当前页面 3.跳转并销毁之前所有页面 4.跳转以及传值 2.更方便的实现SnackBar、Dialog、BottomSheet 三、Ge…

【无标题】从网红长沙看背后的湘菜产业

“吃什么?” 相信这是每一个来长沙旅游的人,面临的第一个问题。 近年来,长沙以美食为媒介,成功吸引了无数游客的目光。而湘菜,作为湖南最具特色的美食名片,无疑在这场美食盛宴中占据了举足轻重的地位。 …

使用 Qt 实现自定义罗盘控件

用 Qt 编写一个简单的罗盘控件,该控件能够动态显示方向。该控件实现了一个带有北(N)和南(S)标记的圆形罗盘面盘,具有可以根据输入角度旋转的指针。 代码功能概述 该项目定义了一个 CompassWidget 类&…