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: {