forked from datawhale/whale-town-end
- 重构README结构,按新开发者学习流程组织内容 - 更新项目架构图和技术栈说明,基于实际代码结构 - 创建CONTRIBUTORS.md,记录所有贡献者信息和统计 - 添加TESTING.md测试指南,支持无依赖快速测试 - 创建docs/ARCHITECTURE.md详细架构设计文档 - 优化.env.example配置,支持测试和生产环境切换 - 添加跨平台测试脚本(test-api.ps1/test-api.sh) - 删除冗余测试文件,统一测试入口 - 更新所有链接为正确的Gitea仓库地址 - 添加MIT开源协议文件
3.1 KiB
3.1 KiB
测试指南
本项目支持无数据库和无邮件服务器的测试模式,让你可以快速验证所有功能!
🚀 快速开始
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响应结果