minishouyin/test/system-test.js

174 lines
4.5 KiB
JavaScript
Raw Normal View History

2025-11-12 11:35:57 +08:00
import { productService } from '../src/renderer/services';
import { orderService } from '../src/renderer/services';
import { authService } from '../src/renderer/services';
// 模拟测试环境
const setupTestEnvironment = () => {
// 模拟localStorage
const localStorageMock = {
getItem: jest.fn(),
setItem: jest.fn(),
removeItem: jest.fn(),
clear: jest.fn(),
};
global.localStorage = localStorageMock;
// 模拟fetch
global.fetch = jest.fn();
// 设置默认用户信息
const mockUser = {
id: 1,
username: 'admin',
name: '管理员',
role: 'admin'
};
localStorageMock.getItem.mockImplementation((key) => {
if (key === 'userInfo') {
return JSON.stringify(mockUser);
}
return null;
});
};
// 测试API连接
const testApiConnection = async () => {
console.log('测试API连接...');
try {
const commonPorts = [3000, 3001, 3002, 9876, 8080];
for (const port of commonPorts) {
try {
const response = await fetch(`http://localhost:${port}/api/health`, {
method: 'GET',
signal: AbortSignal.timeout(1000)
});
if (response.ok) {
console.log(`✅ API连接成功端口: ${port}`);
return port;
}
} catch (error) {
// 端口不可用,继续尝试下一个
}
}
console.error('❌ 无法连接到API服务器');
return null;
} catch (error) {
console.error('❌ API连接测试失败:', error);
return null;
}
};
// 测试认证功能
const testAuth = async () => {
console.log('测试认证功能...');
try {
// 测试登录
const loginData = await authService.login('admin', 'admin123');
if (loginData && loginData.id) {
console.log('✅ 用户登录功能正常');
} else {
console.error('❌ 用户登录功能异常');
}
// 测试获取当前用户
const currentUser = authService.getCurrentUser();
if (currentUser) {
console.log('✅ 获取当前用户功能正常');
} else {
console.error('❌ 获取当前用户功能异常');
}
} catch (error) {
console.error('❌ 认证测试失败:', error);
}
};
// 测试商品功能
const testProducts = async () => {
console.log('测试商品功能...');
try {
// 测试获取商品列表
const products = await productService.getProducts();
if (products && Array.isArray(products.data)) {
console.log(`✅ 商品列表获取成功,共 ${products.data.length} 个商品`);
// 测试获取商品分类
const categories = await productService.getCategories();
if (categories && Array.isArray(categories)) {
console.log(`✅ 商品分类获取成功,共 ${categories.length} 个分类`);
} else {
console.error('❌ 商品分类获取失败');
}
} else {
console.error('❌ 商品列表获取失败');
}
} catch (error) {
console.error('❌ 商品功能测试失败:', error);
}
};
// 测试订单功能
const testOrders = async () => {
console.log('测试订单功能...');
try {
// 测试获取订单列表
const orders = await orderService.getOrders();
if (orders && Array.isArray(orders.data)) {
console.log(`✅ 订单列表获取成功,共 ${orders.data.length} 个订单`);
} else {
console.error('❌ 订单列表获取失败');
}
// 测试获取挂单列表
const heldOrders = await orderService.getHeldOrders();
if (heldOrders && Array.isArray(heldOrders)) {
console.log(`✅ 挂单列表获取成功,共 ${heldOrders.length} 个挂单`);
} else {
console.error('❌ 挂单列表获取失败');
}
} catch (error) {
console.error('❌ 订单功能测试失败:', error);
}
};
// 运行所有测试
const runTests = async () => {
console.log('开始迷你收银台系统功能测试...\n');
setupTestEnvironment();
// 测试API连接
const apiPort = await testApiConnection();
if (!apiPort) {
console.error('\n❌ API连接失败无法继续测试');
return;
}
console.log('\n');
// 测试各项功能
await testAuth();
await testProducts();
await testOrders();
console.log('\n测试完成');
};
// 如果直接运行此文件,执行测试
if (require.main === module) {
runTests().catch(error => {
console.error('测试执行失败:', error);
process.exit(1);
});
}
module.exports = {
setupTestEnvironment,
testApiConnection,
testAuth,
testProducts,
testOrders,
runTests
};