import prisma from '../src/utils/prisma'; import { logger } from '../src/utils/logger'; /** * 回归测试:检查核心表查询是否正常 */ async function regressionTest() { const results: { test: string; passed: boolean; message: string }[] = []; try { logger.info('🧪 开始回归测试...'); // 1. 测试Course表查询 logger.info('1. 测试Course表查询...'); try { const courses = await prisma.course.findMany({ take: 5, include: { nodes: true, chapters: true, }, }); results.push({ test: 'Course表查询', passed: true, message: `✅ 成功查询 ${courses.length} 个课程`, }); logger.info(` ✅ 成功查询 ${courses.length} 个课程`); } catch (error: any) { results.push({ test: 'Course表查询', passed: false, message: `❌ 失败: ${error.message}`, }); logger.error(` ❌ Course表查询失败: ${error.message}`); } // 2. 测试UserLearningProgress查询 logger.info('2. 测试UserLearningProgress查询...'); try { const progress = await prisma.userLearningProgress.findMany({ take: 5, include: { node: { include: { course: true, }, }, }, }); results.push({ test: 'UserLearningProgress查询', passed: true, message: `✅ 成功查询 ${progress.length} 条学习进度记录`, }); logger.info(` ✅ 成功查询 ${progress.length} 条学习进度记录`); } catch (error: any) { results.push({ test: 'UserLearningProgress查询', passed: false, message: `❌ 失败: ${error.message}`, }); logger.error(` ❌ UserLearningProgress查询失败: ${error.message}`); } // 3. 测试User表查询 logger.info('3. 测试User表查询...'); try { const users = await prisma.user.findMany({ take: 5, include: { learningProgress: true, courses: true, }, }); results.push({ test: 'User表查询', passed: true, message: `✅ 成功查询 ${users.length} 个用户`, }); logger.info(` ✅ 成功查询 ${users.length} 个用户`); } catch (error: any) { results.push({ test: 'User表查询', passed: false, message: `❌ 失败: ${error.message}`, }); logger.error(` ❌ User表查询失败: ${error.message}`); } // 总结 logger.info(''); logger.info('📊 回归测试结果:'); const passed = results.filter((r) => r.passed).length; const failed = results.filter((r) => !r.passed).length; results.forEach((r) => { logger.info(` ${r.passed ? '✅' : '❌'} ${r.test}: ${r.message}`); }); logger.info(''); logger.info(`总计: ${passed} 通过, ${failed} 失败`); return failed === 0; } catch (error: any) { logger.error(`❌ 回归测试执行失败: ${error.message}`); logger.error(error.stack); return false; } finally { await prisma.$disconnect(); } } // 运行测试 regressionTest() .then((success) => { process.exit(success ? 0 : 1); }) .catch((error) => { logger.error(`测试脚本执行失败: ${error.message}`); process.exit(1); });