news 2026/4/19 15:24:17

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

收藏!AI核心概念体系全梳理:从基础到大模型的学习指南

本文系统梳理AI领域核心概念框架&#xff0c;清晰拆解人工智能、机器学习、神经网络、深度学习的层级包含关系&#xff0c;详细解析MLP、CNN、RNN、GNN、Transformer五大基础神经网络架构的原理与应用场景。同时从技术范式、学习方法、应用任务三大维度构建AI知识图谱&#xff…

作者头像 李华
网站建设 2026/4/18 8:44:54

文献检索:高效获取学术资源的方法与实践研究

一、WisPaper&#xff1a;智能学术搜索激发科研灵感 科研创新的关键是了解前沿&#xff0c;找到突破口。但传统查文献方式往往效率低&#xff1a; Google Scholar 或 arXiv 搜索结果太多&#xff0c;难以筛选公众号推送滞后&#xff0c;容易错过最新研究文献阅读时间长&#…

作者头像 李华
网站建设 2026/4/18 22:53:31

5分钟掌握YAML文件差异对比:yamldiff工具的完整使用指南

5分钟掌握YAML文件差异对比&#xff1a;yamldiff工具的完整使用指南 【免费下载链接】yamldiff A CLI tool to diff two YAML files. 项目地址: https://gitcode.com/gh_mirrors/ya/yamldiff yamldiff是一款基于Go语言开发的轻量级命令行工具&#xff0c;专门用于快速比…

作者头像 李华