78 lines
2.7 KiB
JavaScript
78 lines
2.7 KiB
JavaScript
const http = require('http');
|
|||
|
|
|
||
|
|
const BASE_URL = 'http://localhost:3002';
|
||
|
|
|
||
|
|
function testAPI(name, endpoint) {
|
||
|
|
return new Promise((resolve) => {
|
||
|
|
const req = http.get(`${BASE_URL}${endpoint}`, (res) => {
|
||
|
|
let data = '';
|
||
|
|
res.on('data', chunk => data += chunk);
|
||
|
|
res.on('end', () => {
|
||
|
|
try {
|
||
|
|
const json = JSON.parse(data);
|
||
|
|
resolve({
|
||
|
|
name,
|
||
|
|
endpoint,
|
||
|
|
status: res.statusCode,
|
||
|
|
success: json.success,
|
||
|
|
dataCount: Array.isArray(json.data) ? json.data.length : (json.data ? Object.keys(json.data).length : 0)
|
||
|
|
});
|
||
|
|
} catch (e) {
|
||
|
|
resolve({ name, endpoint, status: res.statusCode, success: false, error: e.message });
|
||
|
|
}
|
||
|
|
});
|
||
|
|
});
|
||
|
|
req.on('error', (e) => {
|
||
|
|
resolve({ name, endpoint, status: 'ERROR', success: false, error: e.message });
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
async function runTests() {
|
||
|
|
console.log('开始测试所有API...\n');
|
||
|
|
|
||
|
|
const tests = [
|
||
|
|
{ name: '预算报价', endpoint: '/api/budget-projects' },
|
||
|
|
{ name: '施工管理', endpoint: '/api/construction/my-projects' },
|
||
|
|
{ name: '预支款', endpoint: '/api/advances' },
|
||
|
|
{ name: '报销', endpoint: '/api/reimbursements' },
|
||
|
|
{ name: '付款申请', endpoint: '/api/payment-requests' },
|
||
|
|
{ name: '核销', endpoint: '/api/verifications' },
|
||
|
|
{ name: '采购申请', endpoint: '/api/purchase-requests' },
|
||
|
|
{ name: '汇率最新', endpoint: '/api/exchange-rates/latest' },
|
||
|
|
{ name: '汇率历史', endpoint: '/api/exchange-rates/history' },
|
||
|
|
{ name: '项目', endpoint: '/api/projects' },
|
||
|
|
{ name: '分包商', endpoint: '/api/subcontractors' },
|
||
|
|
{ name: '供应商', endpoint: '/api/suppliers' },
|
||
|
|
{ name: '客户', endpoint: '/api/customers' }
|
||
|
|
];
|
||
|
|
|
||
|
|
const results = [];
|
||
|
|
|
||
|
|
for (const test of tests) {
|
||
|
|
const result = await testAPI(test.name, test.endpoint);
|
||
|
|
results.push(result);
|
||
|
|
const status = result.success ? '✅' : '❌';
|
||
|
|
console.log(`${status} ${result.name}: ${result.endpoint} - 状态码: ${result.status}, 数据量: ${result.dataCount || 0}`);
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log('\n========================================');
|
||
|
|
console.log('测试结果汇总');
|
||
|
|
console.log('========================================');
|
||
|
|
|
||
|
|
const successCount = results.filter(r => r.success).length;
|
||
|
|
const failCount = results.filter(r => !r.success).length;
|
||
|
|
|
||
|
|
console.log(`\n成功: ${successCount}/${results.length}`);
|
||
|
|
console.log(`失败: ${failCount}/${results.length}\n`);
|
||
|
|
|
||
|
|
if (failCount > 0) {
|
||
|
|
console.log('失败的API:');
|
||
|
|
results.filter(r => !r.success).forEach(r => {
|
||
|
|
console.log(` - ${r.name}: ${r.error || '未知错误'}`);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
runTests();
|