vitest TypeScript 完整指南:安装、方法与实战示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

vitest for TypeScript:完整指南

vitest 是一个现代、快速且强大的单元测试框架,专为 TypeScript 和 JavaScript 生态系统设计。它作为 Jest 的直接替代品而诞生,但更注重执行速度和对 Vite 的原生支持。如果你使用 Vite 构建项目,vitest 将是理想选择,因为它使用与主构建工具相同的插件和配置。

为什么需要 vitest?首先,它通过使用 esbuild 进行转译并原生支持 ESM(ECMAScript 模块),速度极快。其次,它提供与 Jest 兼容的丰富 API,简化了迁移过程。第三,vitest 内置支持 TypeScript、JSX、模拟(mocking)、覆盖率(coverage)和快照测试(snapshot testing),无需安装额外包。这使其成为小型项目和大型企业级应用的理想工具。

在本 PythonLib 教育网站上,我们将展示如何使用 vitest 测试 TypeScript 代码。你将学习如何安装该库、编写第一个测试、掌握核心方法并避免常见错误。到文章结尾,你将能够在自己的项目中自信地使用 vitest。

安装

通过 npm 或 yarn 安装 vitest。对于 TypeScript 项目,你还需要安装 TypeScript 本身以及 Node.js 的类型定义(如果测试服务器端代码)。

npm install -D vitest typescript @types/node

如果使用 yarn:

yarn add -D vitest typescript @types/node

安装后,在 package.json 中添加脚本:

{
  "scripts": {
    "test": "vitest",
    "test:run": "vitest run"
  }
}

vitest 命令以监视模式运行测试(文件变更时自动重新运行),而 vitest run 则单次运行所有测试。

快速上手

创建一个 sum.ts 文件,包含一个简单函数:

// sum.ts
export function sum(a: number, b: number): number {
  return a + b;
}

现在创建测试文件 sum.test.ts:

// sum.test.ts
import { describe, it, expect } from 'vitest';
import { sum } from './sum';

describe('sum 函数', () => {
  it('应正确相加两个数字', () => {
    expect(sum(2, 3)).toBe(5);
  });

  it('应处理负数', () => {
    expect(sum(-1, -2)).toBe(-3);
  });
});

运行测试:

npm run test

你将看到绿色输出,显示测试通过。恭喜,你已编写了第一个 vitest 测试!

核心方法与函数

vitest 提供了丰富的 API 用于编写测试。以下是 8 个关键方法及其描述和示例。

1. describe

签名: describe(name: string, fn: () => void): void

描述: 将相关测试分组到一个块中。提高可读性,并允许对组应用钩子(beforeEach、afterEach)。

import { describe, it, expect } from 'vitest';

describe('数学运算', () => {
  it('应能相加', () => {
    expect(1 + 1).toBe(2);
  });

  it('应能相减', () => {
    expect(5 - 3).toBe(2);
  });
});

2. it / test

签名: it(name: string, fn: () => void | Promise<void>, timeout?: number): void

描述: 定义一个单独的测试用例。可以使用 it 或 test,两者是同义词。

import { it, expect } from 'vitest';

it('应返回 true                    

推荐