TypeScript Jest 单元测试 搭建

NPM TypeScript 项目搭建

创建目录

bash 复制代码
mkdir mockproject

cd mockproject

初始化NPM项目

bash 复制代码
npm init -y

安装TypeScript

bash 复制代码
npm i -D typescript

使用VSCode 打开项目

创建TS配置文件tsconfig.json

json 复制代码
{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": true,
    "outDir": "./lib",
    "strict": true,
    "lib": ["es6"]
  },
  "include": ["src"],
  "exclude": ["node_modules"]
}

创建src 目录,创建文件src/index.ts 内容如下:

ts 复制代码
export const Hello = (name: string) => `Hello ${name}`;

在package.json中的scripts中添加ts的构建命令

json 复制代码
"build": "tsc"

CTRL + ` 打开终端测试构建。

bash 复制代码
npm run build

构建完成后可以发现项目目录中多了lib 里面就是我们的Hello函数。

Jest 单元测试集成

安装依赖

bash 复制代码
npm i -D jest ts-jest @jest/globals

安装后package.json中开发依赖将会出现如下:

生成Jest配置文件

bash 复制代码
npx ts-jest config:init

jest.config.js 生成内容如下:

js 复制代码
/** @type {import('ts-jest').JestConfigWithTsJest} **/
module.exports = {
  testEnvironment: "node",
  transform: {
    "^.+.tsx?$": ["ts-jest",{}],
  },
};

在package.json中添加单元测试命令,若原来有test命令则删除,填入一下内容。

json 复制代码
"test": "jest"

通常会建立一个tests目录用于存放测试用例,tests中的测试用名称与被测试对象名称保持一致,但是添加上.test.ts后缀,目录结构也保持一致。

创建测试目录tests,创建测试文件tests/index.test.ts

ts 复制代码
import { describe, expect, test } from '@jest/globals';
import { Hello } from '../src/index';

describe('Mock module', () => {
    test('Hello world', () => {
        expect(Hello("abc")).toBe("Hello abc");
    });
});

打开终端使用测试命令执行测试

bash 复制代码
npm run test

可以看到执行测试后执行我们定义的测试用例,并提示了Pass的提示。

参考文献

1\]. [掘金 . \[译文\]一步步构建发布一个 TypeScript NPM 包 . 小被子 . 2019.07 . https://juejin.cn/post/6844903892119977998](https://juejin.cn/post/6844903892119977998) \[2\]. [jest . Getting Started . 2024 . https://jestjs.io/docs/getting-started](https://jestjs.io/docs/getting-started)

相关推荐
米丘3 分钟前
vite 插件 @vitejs/plugin-vue
javascript·node.js·vite
冰暮流星4 分钟前
javascript之DOM更新操作
开发语言·javascript·ecmascript
吃西瓜的年年22 分钟前
react(四)
前端·javascript·react.js
阿凤2144 分钟前
后端返回数据流的格式
开发语言·前端·javascript·uniapp
kyriewen1 小时前
屎山代码拆不动?微前端来救场:一个应用变“乐高城堡”
前端·javascript·前端框架
@大迁世界1 小时前
3月 React 圈又变天了
前端·javascript·react.js·前端框架·ecmascript
SuperEugene2 小时前
Vue3 配置驱动弹窗:JSON配置弹窗内容/按钮,避免重复开发弹窗|配置驱动开发实战篇
前端·javascript·vue.js·前端框架·json
WayneYang2 小时前
前端 JavaScript 核心知识点 + 高频踩坑 + 大厂面试题全汇总(开发 / 面试必备)
前端·javascript
小贵子的博客2 小时前
基于Vue3 和 Ant Design Vue实现Modal弹窗拖拽组件
前端·javascript·vue.js
阿凤212 小时前
uniapp如何修改下载文件位置
开发语言·前端·javascript