83 lines
2.0 KiB
TypeScript
83 lines
2.0 KiB
TypeScript
import { vi } from 'vitest'
|
|
|
|
// 设置全局测试超时时间
|
|
vi.setConfig({ testTimeout: 10000 })
|
|
|
|
// Mock window.matchMedia (用于响应式测试)
|
|
Object.defineProperty(window, 'matchMedia', {
|
|
writable: true,
|
|
value: vi.fn().mockImplementation((query) => ({
|
|
matches: false,
|
|
media: query,
|
|
onchange: null,
|
|
addListener: vi.fn(),
|
|
removeListener: vi.fn(),
|
|
addEventListener: vi.fn(),
|
|
removeEventListener: vi.fn(),
|
|
dispatchEvent: vi.fn(),
|
|
})),
|
|
})
|
|
|
|
// Mock IntersectionObserver (用于虚拟滚动测试)
|
|
global.IntersectionObserver = class IntersectionObserver {
|
|
constructor() {}
|
|
disconnect() {}
|
|
observe() {}
|
|
takeRecords() {
|
|
return []
|
|
}
|
|
unobserve() {}
|
|
} as any
|
|
|
|
// Mock ResizeObserver (用于尺寸变化测试)
|
|
global.ResizeObserver = class ResizeObserver {
|
|
constructor() {}
|
|
disconnect() {}
|
|
observe() {}
|
|
unobserve() {}
|
|
} as any
|
|
|
|
// Mock requestAnimationFrame
|
|
global.requestAnimationFrame = (callback: FrameRequestCallback) => {
|
|
return setTimeout(callback, 0) as unknown as number
|
|
}
|
|
|
|
global.cancelAnimationFrame = (id: number) => {
|
|
clearTimeout(id)
|
|
}
|
|
|
|
// Mock HTMLCanvasElement (用于 html2canvas/jspdf 测试)
|
|
if (!HTMLCanvasElement.prototype.getContext) {
|
|
HTMLCanvasElement.prototype.getContext = vi.fn(() => ({
|
|
fillRect: vi.fn(),
|
|
clearRect: vi.fn(),
|
|
getImageData: vi.fn(),
|
|
putImageData: vi.fn(),
|
|
createImageData: vi.fn(),
|
|
setTransform: vi.fn(),
|
|
drawImage: vi.fn(),
|
|
save: vi.fn(),
|
|
fillText: vi.fn(),
|
|
restore: vi.fn(),
|
|
beginPath: vi.fn(),
|
|
moveTo: vi.fn(),
|
|
lineTo: vi.fn(),
|
|
closePath: vi.fn(),
|
|
stroke: vi.fn(),
|
|
translate: vi.fn(),
|
|
scale: vi.fn(),
|
|
rotate: vi.fn(),
|
|
arc: vi.fn(),
|
|
fill: vi.fn(),
|
|
measureText: vi.fn(() => ({ width: 0 })),
|
|
transform: vi.fn(),
|
|
rect: vi.fn(),
|
|
clip: vi.fn(),
|
|
})) as any
|
|
}
|
|
|
|
// Mock HTMLCanvasElement.toDataURL
|
|
if (!HTMLCanvasElement.prototype.toDataURL) {
|
|
HTMLCanvasElement.prototype.toDataURL = vi.fn(() => 'data:image/png;base64,')
|
|
}
|