Files
PlantAI-rag-new/tests/frontend/unit/b1/setup.js
T

47 lines
1.3 KiB
JavaScript
Raw Normal View History

// setup.js —— B1 归属,vitest 全局 setup(vitest.config.js setupFiles)。
// 环境适配(jsdom 25 + Node ≥22 组合下 window.localStorage 为 undefined):
// - Node ≥22 自带实验性 globalThis.localStorage(未配 --localstorage-file 时为 undefined),会遮蔽 jsdom 实现
// - jsdom 25 在较新 Node 上 window.localStorage 亦可能缺失
// 统一策略:window.localStorage 缺失时注入内存实现,并将其同时暴露到 globalThis。
class MemoryStorage {
constructor() {
this._m = new Map();
}
get length() {
return this._m.size;
}
key(i) {
return [...this._m.keys()][i] ?? null;
}
getItem(k) {
const key = String(k);
return this._m.has(key) ? this._m.get(key) : null;
}
setItem(k, v) {
this._m.set(String(k), String(v));
}
removeItem(k) {
this._m.delete(String(k));
}
clear() {
this._m.clear();
}
}
if (typeof window !== 'undefined') {
let storage = window.localStorage;
if (!storage) {
storage = new MemoryStorage();
try {
Object.defineProperty(window, 'localStorage', { value: storage, configurable: true });
} catch {
window.localStorage = storage;
}
}
try {
Object.defineProperty(globalThis, 'localStorage', { value: storage, configurable: true });
} catch {
globalThis.localStorage = storage;
}
}