news 2026/5/1 9:43:55

专题一:搭建测试驱动环境 (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/30 19:18:15

CNLunar:快速掌握Python农历工具的完整指南

CNLunar&#xff1a;快速掌握Python农历工具的完整指南 【免费下载链接】cnlunar 项目地址: https://gitcode.com/gh_mirrors/cn/cnlunar CNLunar是一款基于Python开发的轻量级农历日历工具&#xff0c;专为技术新手和普通用户设计。这个开源项目无需数据库依赖&#x…

作者头像 李华
网站建设 2026/5/1 4:02:48

收藏!大模型求职通关指南:小白也能看懂的offer获取秘籍

对于瞄准大模型方向求职的同学&#xff08;尤其是刚入门的小白&#xff09;来说&#xff0c;大概率都被同一个问题困扰过&#xff1a;到底怎么做&#xff0c;才能成功拿到大模型相关offer&#xff1f; 在给出答案之前&#xff0c;我们先理清一个核心认知&#xff1a;不管是大模…

作者头像 李华
网站建设 2026/5/1 0:22:04

深度学习模型训练场景的相关概念整理

核心概念解释 1. 学习率 (Learning Rate, lr) 通俗理解&#xff1a; 模型在学习时的“步幅”或“步伐大小”。 详细解释&#xff1a; 想象你在下山&#xff08;目标是到达山谷最低点&#xff09;&#xff0c;学习率就是你每次迈出的步长。学习率太大&#xff1a;你一步跨很远&a…

作者头像 李华
网站建设 2026/5/1 4:07:24

通过精准工具筛选与实战演练:显著提升学术写作效率的专业手册

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

作者头像 李华
网站建设 2026/4/30 20:09:08

从工具评估到写作优化:系统提升学术写作效率的实用操作手册

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

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

告别拖延:6款平板论文工具加速你的研究进程

2025AI 降重网站排行&#xff1a;6 个好用款&#xff08;秒篇、deepseek&#xff09;&#xff0c;亲测不翻车 工具名称 处理速度 降重效果 特色功能 适用场景 秒篇 20分钟 AIGC率降至个位数 AIGC查重降重二合一 AI生成内容优化 AIcheck 15-30分钟 重复率可降至5-8%…

作者头像 李华