Утилиты тестирования
Точка входа /testing упаковывает паттерны, которые собственный тестовый набор этого пакета использует повсюду — без импорта, специфичного для тест-раннера (работает с Vitest, Jest или чем угодно ещё, поскольку просто переприсваивает обычное свойство объекта, а не использует vi.spyOn).
import {
mockStorage,
resetStorageState,
seedExpiredEnvelope,
flushAsync,
} from 'vue-storage-kit/testing'
import { useStorage } from 'vue-storage-kit'
beforeEach(() => {
resetStorageState() // очищает общий кэш экземпляров/движка между тестами
})
it('reads an existing value', async () => {
const { adapter, restore } = mockStorage() // перенаправляет любую цель на один 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') // сокращение для конверта выше, с exp в прошлом
const { value } = useStorage('k', { defaultValue: 'default', target: 'memory' })
await flushAsync()
expect(value.value).toBe('default')
})Экспорты
mockStorage
(adapter?: StorageAdapter) => { adapter, restore() }
Перенаправляет StorageAdapterFactory.get(), чтобы всегда возвращать adapter (свежий MemoryStorageAdapter по умолчанию), независимо от запрошенной цели.
resetStorageState
() => void
Очищает общий кэш экземпляров/движка useStorage() (и Vue, и React) и синглтоны StorageAdapterFactory для каждой цели.
seedEnvelope
(adapter, key, value, opts?) => Promise<void>
Пишет сырой конверт напрямую, чтобы подготовить состояние без живого экземпляра useStorage().
seedExpiredEnvelope
(adapter, key, value, opts?) => Promise<void>
seedEnvelope() с exp, по умолчанию установленным на метку времени уже в прошлом.
flushAsync
(ms?: number) => Promise<void>
Ожидаемая задержка (по умолчанию 10мс), позволяющая устояться ожидающим записям/debounce/throttle/динамическим импортам.
MemoryStorageAdapter, StorageAdapterFactory
Реэкспортированы для удобства.