Files
testing-tool/src/config/__tests__/features.lazy.test.ts
T
rsgltzyd 9aa7a51f0b refactor: 移除 Dashboard 页面及相关功能,更新路由和组件逻辑
- 移除 Dashboard 相关的组件、特性和测试代码,简化项目结构。
- 更新 PageSkeleton 组件,默认渲染工具页面骨架。
- 修改 RouterContainer 和 RouterProvider 以适应新的默认路由策略,确保用户直接访问 timestamp 页面。
- 更新测试用例,确保在新结构下的功能正常。
2026-07-05 22:02:25 +08:00

84 lines
2.4 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from 'vitest';
const pageLoadTracker = vi.hoisted(() => ({
loaded: [] as string[],
}));
vi.mock('@/pages/Timestamp', () => {
pageLoadTracker.loaded.push('Timestamp');
return { default: () => null };
});
vi.mock('@/pages/StorageCleaner', () => {
pageLoadTracker.loaded.push('StorageCleaner');
return { default: () => null };
});
vi.mock('@/pages/QrCode', () => {
pageLoadTracker.loaded.push('QrCode');
return { default: () => null };
});
vi.mock('@/pages/TextStatistics', () => {
pageLoadTracker.loaded.push('TextStatistics');
return { default: () => null };
});
vi.mock('@/pages/Jwt', () => {
pageLoadTracker.loaded.push('Jwt');
return { default: () => null };
});
vi.mock('@/pages/JsonTools', () => {
pageLoadTracker.loaded.push('JsonTools');
return { default: () => null };
});
vi.mock('@/pages/Base64Converter', () => {
pageLoadTracker.loaded.push('Base64Converter');
return { default: () => null };
});
vi.mock('@/pages/RightClickRestorer', () => {
pageLoadTracker.loaded.push('RightClickRestorer');
return { default: () => null };
});
vi.mock('@/pages/TestDataGenerator', () => {
pageLoadTracker.loaded.push('TestDataGenerator');
return { default: () => null };
});
describe('features 懒加载', () => {
beforeEach(() => {
pageLoadTracker.loaded.length = 0;
vi.resetModules();
});
it('仅导入工具函数时不应加载任何页面模块', async () => {
const { getAllFeatureKeys, getDefaultPageOrder } = await import('@/config/features');
getAllFeatureKeys();
getDefaultPageOrder();
expect(pageLoadTracker.loaded).toEqual([]);
});
it('访问 FEATURES 元数据时不应加载任何页面模块', async () => {
const { FEATURES } = await import('@/config/features');
expect(FEATURES).toHaveLength(9);
expect(pageLoadTracker.loaded).toEqual([]);
});
it('loadPage 应仅加载对应页面模块', async () => {
const { loadPage } = await import('@/config/pageLoaders/index');
await loadPage('timestamp');
expect(pageLoadTracker.loaded).toEqual(['Timestamp']);
});
it('loadPage 切换页面时不应加载无关页面模块', async () => {
const { loadPage } = await import('@/config/pageLoaders/index');
await loadPage('jwt');
expect(pageLoadTracker.loaded).toEqual(['Jwt']);
expect(pageLoadTracker.loaded).not.toContain('QrCode');
expect(pageLoadTracker.loaded).not.toContain('TestDataGenerator');
});
});