Files
yunhaifinance/backend/test-apis-simple.js
T

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();