Files
2026-08-19 17:32:25 +08:00

57 lines
1.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { vi } from 'vitest'
// 路由守卫依赖 nprogress,jsdom 下避免其 DOM 副作用
vi.mock('nprogress', () => ({
default: { configure: vi.fn(), start: vi.fn(), done: vi.fn() },
configure: vi.fn(),
start: vi.fn(),
done: vi.fn(),
}))
// ----- jsdom 缺失的浏览器 API polyfill -----
// 自建 UI 组件(modal/select/dropdown/tree 等)常依赖以下全局对象,jsdom 未实现,需补桩。
// ResizeObserver:组件监听元素尺寸时使用
if (!globalThis.ResizeObserver) {
globalThis.ResizeObserver = class {
observe() {}
unobserve() {}
disconnect() {}
}
}
// IntersectionObserver:虚拟列表/懒加载等使用
if (!globalThis.IntersectionObserver) {
globalThis.IntersectionObserver = class {
constructor() {}
observe() {}
unobserve() {}
disconnect() {}
takeRecords() {
return []
}
}
}
// matchMedia:主题/响应式/偏好判断使用
if (!globalThis.matchMedia) {
globalThis.matchMedia = (query) => ({
matches: false,
media: query,
onchange: null,
addListener: vi.fn(),
removeListener: vi.fn(),
addEventListener: vi.fn(),
removeEventListener: vi.fn(),
dispatchEvent: vi.fn(),
})
}
// 元素滚动方法:jsdom 未实现会抛 "not implemented"
if (!Element.prototype.scrollTo) {
Element.prototype.scrollTo = vi.fn()
}
if (!Element.prototype.scrollIntoView) {
Element.prototype.scrollIntoView = vi.fn()
}