Testing Utilities
The /testing entry point packages the patterns this package's own test suite uses everywhere — no test-runner-specific import (works with Vitest, Jest, or anything else, since it just reassigns a plain object property, not vi.spyOn).
import {
mockStorage,
resetStorageState,
seedExpiredEnvelope,
flushAsync,
} from 'vue-storage-kit/testing'
import { useStorage } from 'vue-storage-kit'
beforeEach(() => {
resetStorageState() // clears the shared instance/engine cache between tests
})
it('reads an existing value', async () => {
const { adapter, restore } = mockStorage() // redirects every target to one MemoryStorageAdapter
await adapter.setItem('k', JSON.stringify({ v: 1, d: '"stored"', exp: null, ts: Date.now() }))
const { value } = useStorage('k', { defaultValue: 'default', target: 'memory' })
await flushAsync()
expect(value.value).toBe('stored')
restore()
})
it('treats an expired key as expired', async () => {
const { adapter } = mockStorage()
await seedExpiredEnvelope(adapter, 'k', 'stale') // shorthand for the envelope above, with exp in the past
const { value } = useStorage('k', { defaultValue: 'default', target: 'memory' })
await flushAsync()
expect(value.value).toBe('default')
})Exports
mockStorage
(adapter?: StorageAdapter) => { adapter, restore() }
Redirects StorageAdapterFactory.get() to always return adapter (a fresh MemoryStorageAdapter by default), regardless of the requested target.
resetStorageState
() => void
Clears the shared useStorage()/engine instance cache (Vue and React alike) and StorageAdapterFactory's per-target singletons.
seedEnvelope
(adapter, key, value, opts?) => Promise<void>
Writes a raw envelope directly, for arranging state without a live useStorage() instance.
seedExpiredEnvelope
(adapter, key, value, opts?) => Promise<void>
seedEnvelope() with exp defaulted to a timestamp already in the past.
flushAsync
(ms?: number) => Promise<void>
await-able delay (default 10ms) for letting pending writes/debounce/throttle/dynamic imports settle.
MemoryStorageAdapter, StorageAdapterFactory
Re-exported for convenience.