⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议
Skip to content

9.3 给你的代码上保险——单元测试/集成测试:Jest + Test DB;seed 前置

自动化测试是你代码的保险单——每次改动都能自动验证是否破坏了已有功能。

为什么需要自动化测试

本节技术栈

工具用途选择理由
Jest测试框架零配置、快照测试、Mock 支持
ts-jestTypeScript 支持直接运行 TS 测试
@testing-libraryReact 测试面向用户行为的测试
supertestAPI 测试简洁的 HTTP 断言

快速开始配置

bash
# 安装依赖
npm install -D jest ts-jest @types/jest

# 初始化配置
npx ts-jest config:init
typescript
// jest.config.ts
import type { Config } from 'jest';

const config: Config = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  roots: ['<rootDir>/src', '<rootDir>/__tests__'],
  testMatch: ['**/*.test.ts', '**/*.spec.ts'],
  setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/$1',
  },
};

export default config;

本节核心内容

小节主题解决的问题
9.3.1Jest 配置如何配置测试框架和断言库
9.3.2测试数据库内存数据库 vs 真实数据库的选择
9.3.3Seed 数据如何准备测试用例所需的数据
9.3.4Mock 策略如何模拟外部依赖

测试文件组织

project/
├── src/
│   ├── services/
│   │   └── order.service.ts
│   └── utils/
│       └── price.ts
├── __tests__/
│   ├── services/
│   │   └── order.service.test.ts
│   ├── api/
│   │   └── orders.test.ts
│   └── helpers/
│       ├── factory.ts
│       └── cleanup.ts
├── jest.config.ts
└── jest.setup.ts

本节小结

自动化测试是现代软件开发的基础设施。通过 Jest 和测试数据库的配合,可以实现从单元测试到集成测试的完整覆盖。关键是选择合适的工具、组织好测试代码、准备好测试数据。接下来的小节将详细介绍每个环节的具体实现。