From d72bf0897e45ca99f9fb242d22eedf4531da7b68 Mon Sep 17 00:00:00 2001 From: benjamin Date: Wed, 20 May 2026 11:08:31 +0800 Subject: [PATCH] =?UTF-8?q?test(frontend):=20=E5=8A=A0=E8=BD=BD=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E6=B5=8B=E8=AF=95=E5=88=9D=E5=A7=8B=E5=8C=96=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- frontend/src/__tests__/setup.ts | 39 +++++++++++++++++++++++++++++++++ frontend/vitest.config.ts | 1 + 2 files changed, 40 insertions(+) diff --git a/frontend/src/__tests__/setup.ts b/frontend/src/__tests__/setup.ts index decb2a37..b777b22e 100644 --- a/frontend/src/__tests__/setup.ts +++ b/frontend/src/__tests__/setup.ts @@ -5,6 +5,45 @@ import { config } from '@vue/test-utils' import { vi } from 'vitest' +function createMemoryStorage(): Storage { + const values = new Map() + + return { + get length() { + return values.size + }, + clear() { + values.clear() + }, + getItem(key: string) { + return values.has(key) ? values.get(key)! : null + }, + key(index: number) { + return Array.from(values.keys())[index] ?? null + }, + removeItem(key: string) { + values.delete(key) + }, + setItem(key: string, value: string) { + values.set(key, String(value)) + } + } +} + +if (typeof globalThis.localStorage === 'undefined' || typeof globalThis.localStorage.getItem !== 'function') { + Object.defineProperty(globalThis, 'localStorage', { + configurable: true, + value: createMemoryStorage() + }) +} + +if (typeof window !== 'undefined' && typeof window.localStorage.getItem !== 'function') { + Object.defineProperty(window, 'localStorage', { + configurable: true, + value: globalThis.localStorage + }) +} + // Mock requestIdleCallback (Safari < 15 不支持) if (typeof globalThis.requestIdleCallback === 'undefined') { globalThis.requestIdleCallback = ((callback: IdleRequestCallback) => { diff --git a/frontend/vitest.config.ts b/frontend/vitest.config.ts index 39568250..8c45a9ff 100644 --- a/frontend/vitest.config.ts +++ b/frontend/vitest.config.ts @@ -13,6 +13,7 @@ export default defineConfig({ test: { globals: true, environment: 'jsdom', + setupFiles: ['./src/__tests__/setup.ts'], include: ['src/**/*.{test,spec}.{js,ts,jsx,tsx}'], exclude: ['node_modules', 'dist'], coverage: {