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

9.2 在沙盒里跑测试——测试环境与隔离:.env.test、迁移、数据清理

测试环境的核心原则:与生产完全隔离,每次测试都从干净状态开始。

为什么需要独立的测试环境

测试环境隔离的必要性:

风险后果解决方案
测试数据写入生产库用户看到测试数据独立数据库
测试清理生产数据数据丢失环境变量隔离
测试影响生产性能服务变慢独立服务实例
并行测试数据冲突测试不稳定事务回滚

测试环境架构

┌─────────────────────────────────────────────────────┐
│                  测试环境架构                         │
├─────────────────────────────────────────────────────┤
│                                                     │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐      │
│  │ .env.test │    │ test DB  │    │ mock API │      │
│  └─────┬────┘    └─────┬────┘    └─────┬────┘      │
│        │               │               │           │
│        └───────────────┼───────────────┘           │
│                        │                           │
│                 ┌──────▼──────┐                    │
│                 │  测试运行器   │                    │
│                 │    Jest     │                    │
│                 └─────────────┘                    │
│                                                     │
└─────────────────────────────────────────────────────┘

本节核心内容

小节主题解决的问题
9.2.1环境隔离如何配置独立的测试数据库和服务
9.2.2环境变量如何管理测试专用配置
9.2.3数据库迁移如何初始化测试数据库结构
9.2.4数据清理如何确保测试间的状态隔离

快速入门:最小测试环境配置

bash
# 1. 创建测试环境配置文件
touch .env.test

# 2. 配置测试数据库连接
echo 'DATABASE_URL="postgresql://user:pass@localhost:5432/myapp_test"' >> .env.test

# 3. 在 package.json 中添加测试脚本
json
{
  "scripts": {
    "test": "dotenv -e .env.test -- jest",
    "test:setup": "dotenv -e .env.test -- prisma migrate deploy",
    "test:reset": "dotenv -e .env.test -- prisma migrate reset --force"
  }
}

本节小结

测试环境隔离是质量保障的基础设施。通过独立的数据库、专用的环境变量、自动化的迁移和清理机制,可以确保每次测试都在可控、可重复的环境中运行。接下来的小节将详细介绍每个环节的具体实现。