Files
whale-town-end/TESTING.md
moyin 7924cfb201 docs:重构README和贡献者文档,完善项目架构说明和测试指南
- 重构README结构,按新开发者学习流程组织内容
- 更新项目架构图和技术栈说明,基于实际代码结构
- 创建CONTRIBUTORS.md,记录所有贡献者信息和统计
- 添加TESTING.md测试指南,支持无依赖快速测试
- 创建docs/ARCHITECTURE.md详细架构设计文档
- 优化.env.example配置,支持测试和生产环境切换
- 添加跨平台测试脚本(test-api.ps1/test-api.sh)
- 删除冗余测试文件,统一测试入口
- 更新所有链接为正确的Gitea仓库地址
- 添加MIT开源协议文件
2025-12-18 15:03:09 +08:00

3.1 KiB
Raw Blame History

测试指南

本项目支持无数据库和无邮件服务器的测试模式,让你可以快速验证所有功能!

🚀 快速开始

1. 环境配置

# 复制环境配置文件
cp .env.example .env

默认配置已经设置为测试模式,无需修改即可使用。

2. 启动服务

# 安装依赖
npm install

# 启动开发服务器
npm run dev

3. 运行测试

Windows (PowerShell):

.\test-api.ps1

Linux/macOS:

./test-api.sh

自定义参数:

# Windows
.\test-api.ps1 -BaseUrl "http://localhost:3000" -TestEmail "custom@example.com"

# Linux/macOS
./test-api.sh "http://localhost:3000" "custom@example.com"

🧪 测试功能

测试脚本会验证以下功能:

  • 邮箱验证码发送 - 生成6位数验证码
  • 邮箱验证码验证 - 验证码校验和清理
  • 用户注册 - 完整的用户注册流程
  • 用户登录 - 用户名/邮箱/手机号登录

🔧 测试模式特性

  • 🗄️ Redis 文件存储 - 使用 redis-data/redis.json 存储验证码
  • 📧 邮件测试模式 - 邮件内容输出到控制台无需真实SMTP
  • 💾 内存用户存储 - 无需数据库,用户数据存储在内存中
  • 🔄 自动切换 - 根据配置自动选择存储模式

📊 单元测试

# 运行所有单元测试
npm test

# 监听模式
npm run test:watch

# 生成覆盖率报告
npm run test:cov

🌐 生产环境配置

要切换到生产环境,编辑 .env 文件:

# 启用数据库(取消注释并填入真实数据)
DB_HOST=your_mysql_host
DB_PORT=3306
DB_USERNAME=your_db_username
DB_PASSWORD=your_db_password
DB_NAME=your_db_name

# 启用真实Redis取消注释并设置
USE_FILE_REDIS=false
REDIS_HOST=your_redis_host
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password

# 启用邮件服务(取消注释并填入真实数据)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_app_password
EMAIL_FROM="Whale Town Game" <noreply@whaletown.com>

# 生产环境设置
NODE_ENV=production
LOG_LEVEL=info

🔍 故障排除

服务启动失败

  • 检查端口3000是否被占用
  • 确认Node.js版本 >= 18.0.0
  • 运行 npm install 重新安装依赖

测试脚本执行失败

  • 确认服务器正在运行
  • 检查防火墙设置
  • 在Linux/macOS上确保脚本有执行权限chmod +x test-api.sh

Redis文件存储问题

  • 检查 redis-data 目录权限
  • 确认 USE_FILE_REDIS=true 设置正确

邮件测试模式问题

  • 确认邮件配置为注释状态
  • 检查服务器控制台日志输出

📝 测试数据

测试完成后,你可以查看:

  • redis-data/redis.json - 验证码存储数据
  • 服务器控制台 - 邮件内容输出
  • 测试脚本输出 - API响应结果

🎯 下一步