diff --git a/vitest.setup.ts b/vitest.setup.ts index d2973f28..fe2c426f 100644 --- a/vitest.setup.ts +++ b/vitest.setup.ts @@ -14,3 +14,20 @@ Object.defineProperty(window, 'matchMedia', { dispatchEvent: () => false, }), }) + +if (typeof window !== 'undefined') { + if (!window.localStorage || typeof window.localStorage.clear !== 'function') { + let store: Record = {}; + const mockLocalStorage = { + getItem: (key: string) => store[key] || null, + setItem: (key: string, value: string) => { store[key] = String(value); }, + removeItem: (key: string) => { delete store[key]; }, + clear: () => { store = {}; }, + length: 0, + key: (index: number) => Object.keys(store)[index] || null, + }; + Object.defineProperty(window, 'localStorage', { value: mockLocalStorage, writable: true }); + Object.defineProperty(globalThis, 'localStorage', { value: mockLocalStorage, writable: true }); + } +} +