Files
jordium-gantt-vue3/tests/setup.ts
2025-12-17 18:09:55 +08:00

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,')
}