news 2026/4/26 13:23:53

专题一:搭建测试驱动环境 (TypeScript + Vitest)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
专题一:搭建测试驱动环境 (TypeScript + Vitest)
1. 项目初始化

我们不使用复杂的 Monorepo(pnpm workspace)配置,为了降低学习门槛,我们采用单仓库多模块的结构,重点放在逻辑实现上。

目标结构预览:

Plaintext

mini-vue/ ├── src/ │ ├── reactivity/ <-- 第一阶段的主战场 │ │ ├── index.ts │ │ └── tests/ <-- 测试文件都在这里 │ └── shared/ <-- 公共工具库 ├── package.json ├── tsconfig.json └── vitest.config.ts <-- 测试配置文件

第一步:创建文件夹并初始化打开你的终端(Terminal),执行以下命令:

Bash

# 1. 创建目录 mkdir mini-vue cd mini-vue # 2. 初始化 package.json (全部默认) npm init -y # 3. 安装 TypeScript # -D 表示安装为开发依赖 (devDependencies) npm install typescript -D # 4. 初始化 TS 配置 npx tsc --init

2. 安装测试神器 —— Vitest

Vue 3 官方以前用 Jest,但现在全面转向了Vitest。 Vitest 基于 Vite,速度极快,开箱即用,而且对 TypeScript 支持极好,不需要像 Jest 那样配一堆 Babel 转换器。

第二步:安装 Vitest

Bash

npm install vitest -D

3. 配置文件详解

我们需要修改两个配置文件,确保 TS 和 Vitest 能配合默契。

第三步:配置tsconfig.json找到根目录下的tsconfig.json,把里面的内容替换为以下配置。这一步是为了确保我们能使用最新的 ES6 语法,并且允许引入模块。

JSON

{ "compilerOptions": { "target": "esnext", "module": "esnext", "moduleResolution": "node", "strict": true, "jsx": "preserve", "sourceMap": true, "resolveJsonModule": true, "esModuleInterop": true, "lib": ["esnext", "dom"], "types": ["vitest/globals"] } }

注意:"types": ["vitest/globals"]允许我们在测试文件中直接使用describe,it,expect而不需要每次都 import。

第四步:配置package.json我们需要加一个脚本命令,让我们能一键跑测试。

打开package.json,在"scripts"里添加"test"

JSON

{ "name": "mini-vue", "version": "1.0.0", "main": "index.js", "scripts": { "test": "vitest" }, "devDependencies": { "typescript": "^5.x.x", "vitest": "^1.x.x" } }

4. 实战演练:写下你的第一个测试

环境搭好了,我们来跑通流程。 我们模拟一个简单的加法功能,来验证环境是否正常。

操作动作:

  1. 在根目录新建src文件夹。

  2. src下新建index.ts(这里放我们的源代码)。

  3. src下新建index.spec.ts(这里放测试代码,.spec.ts是测试文件的常见后缀)。

文件内容:

src/index.spec.ts(测试文件)

TypeScript

import { add } from "./index"; // describe 定义一个测试分组,名字叫 "init" describe("init", () => { // it 定义一个具体的测试用例 it("should add two numbers", () => { // expect 是断言:我期望 add(1, 1) 的结果是 2 expect(add(1, 1)).toBe(2); }); });

src/index.ts(源文件)

TypeScript

export function add(a: number, b: number) { return a + b; }

5. 启动引擎!

回到终端,运行:

Bash

npm run test

预期结果:你应该会看到终端里出现一片绿色的文字,显示✓ src/index.spec.ts以及Test Files 1 passed

这意味着:

  1. TypeScript 编译成功。

  2. Vitest 运行成功。

  3. 你的代码逻辑通过了测试。


🧠 核心知识点总结 (Review)

  1. Vitest: 我们选用的测试框架。它的特点是,且对 ESM (import/export) 支持极好。

  2. .spec.ts: 这是测试文件的约定俗成命名,Vitest 会自动扫描所有带.spec.test的文件并运行。

  3. TDD 流程:

    • 以后做每一个功能(比如reactive),我们都会先写.spec.ts

    • 运行测试 -> 报错 (Red)。

    • 去写代码实现逻辑。

    • 再次运行 -> 通过 (Green)。

    • 重构代码 (Refactor)。


✅ 你的今日任务

  1. 动手操作:完全按照上面的步骤,在你的本地建立一个mini-vue文件夹。

  2. 跑通测试:确保执行npm run test后能看到绿色的通过提示。

  3. 准备就绪:建立src/reactivity文件夹,我们明天要在这里写下 Vue 3 的第一行核心代码。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 12:33:57

模型训练常见问题:Loss 不降反升的原因分析及排查步骤

现象&#xff1a;Loss 不降反升或剧烈震荡 核心原因&#xff1a;学习率过大 模型更新步伐太大&#xff0c;每一步都“跨过”了损失函数的最低点&#xff0c;在最优解两侧来回跳跃&#xff0c;甚至可能越跳越高&#xff08;发散&#xff09;。系统性对策与排查步骤 对策一&#…

作者头像 李华
网站建设 2026/4/24 10:48:57

性能调优手册:Z-Image-Turbo conda环境优化实战

性能调优手册&#xff1a;Z-Image-Turbo conda环境优化实战 阿里通义Z-Image-Turbo WebUI图像快速生成模型 二次开发构建by科哥 运行截图 本文定位&#xff1a;针对阿里通义Z-Image-Turbo WebUI在本地部署中出现的启动慢、显存占用高、推理延迟等问题&#xff0c;提供一套基于…

作者头像 李华
网站建设 2026/4/21 1:27:06

基于智能工具筛选与优化:系统化提升学术写作效率的完整手册

工具核心特点速览 工具名称 核心优势 适用场景 数据支撑 aibiye 全流程覆盖降重优化 从开题到答辩的一站式需求 支持20万字长文逻辑连贯 aicheck 院校规范适配模板化输出 国内本硕博论文框架搭建 覆盖90%高校格式要求 秒篇 3分钟文献综述生成 紧急补文献章节 知…

作者头像 李华
网站建设 2026/4/23 8:47:03

传统vs AI:创建Windows虚拟机效率提升10倍实测

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成两份对比方案&#xff1a;1.传统手动配置Windows 10虚拟机的详细步骤文档 2.AI自动生成的同等配置方案。要求包含&#xff1a;系统版本选择、驱动安装、功能组件启用、性能优…

作者头像 李华
网站建设 2026/4/20 5:15:19

如何用AI工具快速解析UFS文件系统

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于AI的UFS文件系统解析工具&#xff0c;能够自动识别UFS分区结构&#xff0c;提取文件元数据&#xff0c;并支持数据恢复功能。工具应具备以下功能&#xff1a;1. 自动扫…

作者头像 李华
网站建设 2026/4/19 2:42:33

AI如何革新SSH工具开发?快马平台实战解析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 使用快马平台开发一个AI增强的SSH远程工具&#xff0c;需包含以下功能&#xff1a;1. 基于Python的SSH客户端核心功能 2. AI智能命令补全&#xff08;学习用户习惯命令&#xff09…

作者头像 李华