当前位置: 首页 > news >正文

专题一:搭建测试驱动环境 (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 的第一行核心代码。

http://www.jsqmd.com/news/214759/

相关文章:

  • 从智能工具选择到写作实践:全面优化学术写作效率的进阶指南
  • 饮料瓶盖密封性检测:生产线上的视觉把关
  • 用AI自动生成Django项目代码,开发效率翻倍
  • 如何实现《原神》和《崩坏:星穹铁道》240帧极致流畅体验?
  • MGeo模型在地图POI合并中的实际应用
  • COCO数据集在目标检测项目中的实战应用
  • MGeo模型在物流地址合并中的实际应用
  • CNLunar:快速掌握Python农历工具的完整指南
  • 多模态实战:用MGeo同时处理地址文本和地理坐标数据
  • 彻底关闭OneNote开机自启动,提升电脑启动速度
  • 企业级容灾方案:Z-Image-Turbo高可用集群部署构想
  • 游戏UI元素设计:Z-Image-Turbo快速产出图标
  • 完整文档解析:Z-Image-Turbo高级功能使用条件说明
  • 文献检索:高效获取学术资源的方法与实践研究
  • 毕业设计救星:学生党如何免配置玩转MGeo地址相似度模型
  • 文旅融合新玩法:基于MGeo的旅游路线智能生成器
  • 如何用MGeo提升生鲜配送最后一公里体验
  • AI证件照生成器:一键生成合规证件照的智能解决方案
  • MGeo地址匹配API的设计与封装实践
  • MGeo在旅游平台酒店地址归一化中的使用
  • Z-Image-Turbo能否用于科研?学术用途可行性评估
  • MGeo与传统地址匹配算法对比分析
  • MGeo模型部署成本优化:按需使用云端GPU的实战技巧
  • 【Linux命令大全】004.系统管理之adduser命令(实操篇)
  • BongoCat桌面宠物完全指南:打造你的专属互动伴侣
  • MGeo地址匹配系统日志分析技巧
  • 如何通过MGeo提升CRM系统地址质量
  • 是否该选Z-Image-Turbo?一文看懂它与Midjourney的核心差异
  • 从国内火到CES:上纬启元Q1引爆拉斯维加斯
  • AI如何自动生成USB设备检测工具代码