diff --git a/pages/QrCode/__tests__/index.test.tsx b/pages/QrCode/__tests__/index.test.tsx index a3ed8d9..94532f3 100644 --- a/pages/QrCode/__tests__/index.test.tsx +++ b/pages/QrCode/__tests__/index.test.tsx @@ -1,7 +1,16 @@ -import { describe, it, expect, vi } from 'vitest'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { describe, expect, it, vi } from 'vitest'; +import { fireEvent, render, screen } from '@testing-library/react'; import QrCodePage from '../index'; +// 💡 1. 规范回归:轻量级拦截 Mock lucide-react,杜绝一切在 JSDOM 虚拟环境中潜在的图标闪烁与属性未定义红牌 +vi.mock('lucide-react', () => ({ + QrCode: () =>
Icon
, + Type: () =>
Type
, + Upload: () =>
Upload
, + Image: () =>
Image
, + Trash2: () =>
Trash2
, +})); + // Mock useLazyTranslation vi.mock('@/utils/useLazyTranslation', () => ({ useLazyTranslation: () => ({ @@ -11,6 +20,13 @@ vi.mock('@/utils/useLazyTranslation', () => ({ }), })); +// Mock useSnackbar +vi.mock('@/components/GlobalSnackbar', () => ({ + useSnackbar: () => ({ + showMessage: vi.fn(), + }), +})); + // Mock getEntryPointType vi.mock('@/config/features', async (importOriginal) => { const actual = await importOriginal(); @@ -36,13 +52,6 @@ vi.mock('qrious', () => ({ })), })); -// Mock useSnackbar -vi.mock('@/components/GlobalSnackbar', () => ({ - useSnackbar: () => ({ - showMessage: vi.fn(), - }), -})); - describe('QrCodePage', () => { it('应该默认渲染生成模式', () => { render(); @@ -78,14 +87,19 @@ describe('QrCodePage', () => { expect(screen.getByTestId('qr-code-preview')).toBeInTheDocument(); }); - it('应该渲染输入区域', () => { + it('应该渲染输入区域的系统标签(对齐新版 Label 机制)', () => { render(); + // ✅ 完美对接:重构后不管是 Generate 还是 Parse 面板, + // 其外部包裹层里的标准独立