/** * 环境隔离测试 — 需要切换 document/window/localStorage 环境并调用 jest.resetModules()。 * 独立成文件:resetModules 会清空模块缓存,若与其他测试同文件会导致 * 后续 require 拿到新模块实例、与 import 时绑定的实例状态分裂。 * 注:jsdom 以 getter 暴露 document/window,普通赋值无效,须用 defineProperty 覆盖。 * @module tests * @version 0.5.0 */ /** 临时移除全局对象,返回恢复函数 */ const hideGlobal = (key: string): (() => void) => { const desc = Object.getOwnPropertyDescriptor(global, key); Object.defineProperty(global, key, { value: undefined, configurable: true, writable: true }); return () => { if (desc) Object.defineProperty(global, key, desc); else delete (global as Record)[key]; }; }; describe('环境隔离(SSR / localStorage 异常路径)', () => { test('escapeHTML SSR 路径(无 document)', () => { const restore = hideGlobal('document'); jest.resetModules(); const { escapeHTML } = require('../src/utils.js'); const result = escapeHTML(''); expect(result).not.toContain('