mirror of
https://gitee.com/mateos/mateclaw.git
synced 2026-11-04 06:55:32 +08:00
fix(test): isolate browser storage from Node globals
This commit is contained in:
parent
11378be705
commit
cfd704f19a
12
mateclaw-ui/src/test/setup.ts
Normal file
12
mateclaw-ui/src/test/setup.ts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import { Storage } from 'happy-dom'
|
||||||
|
|
||||||
|
// Node 25 exposes its own localStorage even without a backing file. Vitest
|
||||||
|
// preserves existing Node globals, so it can shadow happy-dom's browser API.
|
||||||
|
// Give each test file browser storage independent of the host Node version.
|
||||||
|
for (const name of ['localStorage', 'sessionStorage'] as const) {
|
||||||
|
Object.defineProperty(globalThis, name, {
|
||||||
|
configurable: true,
|
||||||
|
writable: true,
|
||||||
|
value: new Storage(),
|
||||||
|
})
|
||||||
|
}
|
||||||
17
mateclaw-ui/src/utils/__tests__/browserStorage.test.ts
Normal file
17
mateclaw-ui/src/utils/__tests__/browserStorage.test.ts
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import { describe, expect, it } from 'vitest'
|
||||||
|
|
||||||
|
describe('browser storage in the DOM test environment', () => {
|
||||||
|
it.each(['localStorage', 'sessionStorage'] as const)('%s provides the browser Storage API', name => {
|
||||||
|
const storage = globalThis[name]
|
||||||
|
expect(typeof storage.getItem, `${process.version}: ${name}.getItem`).toBe('function')
|
||||||
|
expect(typeof storage.clear, `${process.version}: ${name}.clear`).toBe('function')
|
||||||
|
storage.clear()
|
||||||
|
storage.setItem('token', 'test-token')
|
||||||
|
expect(storage.getItem('token')).toBe('test-token')
|
||||||
|
expect(storage.length).toBe(1)
|
||||||
|
expect(storage.key(0)).toBe('token')
|
||||||
|
storage.removeItem('token')
|
||||||
|
expect(storage.getItem('token')).toBeNull()
|
||||||
|
expect(storage.length).toBe(0)
|
||||||
|
})
|
||||||
|
})
|
||||||
@ -14,6 +14,7 @@ export default defineConfig({
|
|||||||
test: {
|
test: {
|
||||||
include: ['src/**/*.{test,spec}.{ts,tsx}'],
|
include: ['src/**/*.{test,spec}.{ts,tsx}'],
|
||||||
environment: 'happy-dom',
|
environment: 'happy-dom',
|
||||||
|
setupFiles: ['./src/test/setup.ts'],
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user