001project_wildgrowth/backend/scripts/regression-test.ts

121 lines
3.3 KiB
TypeScript
Raw Permalink Normal View History

2026-02-11 15:26:03 +08:00
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);
});