121 lines
3.3 KiB
TypeScript
121 lines
3.3 KiB
TypeScript
|
|
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);
|
|||
|
|
});
|