feat: 增强情绪博物馆项目功能 - 新增用户评论和帖子功能,优化前端架构和WebSocket通信 - 更新文档和部署配置
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
/**
|
||||
* 测试环境设置
|
||||
*/
|
||||
|
||||
import { vi } from 'vitest'
|
||||
import { config } from '@vue/test-utils'
|
||||
import ElementPlus from 'element-plus'
|
||||
|
||||
// 全局组件注册
|
||||
config.global.plugins = [ElementPlus]
|
||||
|
||||
// 全局属性
|
||||
config.global.config.globalProperties = {
|
||||
$t: (key: string) => key, // 模拟国际化
|
||||
$route: {
|
||||
path: '/',
|
||||
params: {},
|
||||
query: {},
|
||||
meta: {}
|
||||
},
|
||||
$router: {
|
||||
push: vi.fn(),
|
||||
replace: vi.fn(),
|
||||
go: vi.fn(),
|
||||
back: vi.fn(),
|
||||
forward: vi.fn()
|
||||
}
|
||||
}
|
||||
|
||||
// 模拟全局对象
|
||||
Object.defineProperty(window, 'matchMedia', {
|
||||
writable: true,
|
||||
value: vi.fn().mockImplementation(query => ({
|
||||
matches: false,
|
||||
media: query,
|
||||
onchange: null,
|
||||
addListener: vi.fn(), // deprecated
|
||||
removeListener: vi.fn(), // deprecated
|
||||
addEventListener: vi.fn(),
|
||||
removeEventListener: vi.fn(),
|
||||
dispatchEvent: vi.fn(),
|
||||
})),
|
||||
})
|
||||
|
||||
// 模拟 ResizeObserver
|
||||
global.ResizeObserver = vi.fn().mockImplementation(() => ({
|
||||
observe: vi.fn(),
|
||||
unobserve: vi.fn(),
|
||||
disconnect: vi.fn(),
|
||||
}))
|
||||
|
||||
// 模拟 IntersectionObserver
|
||||
global.IntersectionObserver = vi.fn().mockImplementation(() => ({
|
||||
observe: vi.fn(),
|
||||
unobserve: vi.fn(),
|
||||
disconnect: vi.fn(),
|
||||
}))
|
||||
|
||||
// 模拟 localStorage
|
||||
const localStorageMock = {
|
||||
getItem: vi.fn(),
|
||||
setItem: vi.fn(),
|
||||
removeItem: vi.fn(),
|
||||
clear: vi.fn(),
|
||||
}
|
||||
global.localStorage = localStorageMock
|
||||
|
||||
// 模拟 sessionStorage
|
||||
const sessionStorageMock = {
|
||||
getItem: vi.fn(),
|
||||
setItem: vi.fn(),
|
||||
removeItem: vi.fn(),
|
||||
clear: vi.fn(),
|
||||
}
|
||||
global.sessionStorage = sessionStorageMock
|
||||
|
||||
// 模拟 fetch
|
||||
global.fetch = vi.fn()
|
||||
|
||||
// 模拟 URL.createObjectURL
|
||||
global.URL.createObjectURL = vi.fn(() => 'mocked-url')
|
||||
global.URL.revokeObjectURL = vi.fn()
|
||||
|
||||
// 模拟 Notification
|
||||
global.Notification = vi.fn().mockImplementation(() => ({
|
||||
close: vi.fn(),
|
||||
}))
|
||||
|
||||
// 模拟 navigator
|
||||
Object.defineProperty(navigator, 'clipboard', {
|
||||
value: {
|
||||
writeText: vi.fn().mockResolvedValue(undefined),
|
||||
readText: vi.fn().mockResolvedValue(''),
|
||||
},
|
||||
writable: true,
|
||||
})
|
||||
|
||||
Object.defineProperty(navigator, 'vibrate', {
|
||||
value: vi.fn(),
|
||||
writable: true,
|
||||
})
|
||||
|
||||
// 模拟 document.execCommand
|
||||
document.execCommand = vi.fn()
|
||||
|
||||
// 模拟 getSelection
|
||||
global.getSelection = vi.fn().mockReturnValue({
|
||||
toString: vi.fn().mockReturnValue(''),
|
||||
removeAllRanges: vi.fn(),
|
||||
addRange: vi.fn(),
|
||||
})
|
||||
|
||||
// 模拟 console 方法(避免测试时输出过多日志)
|
||||
global.console = {
|
||||
...console,
|
||||
log: vi.fn(),
|
||||
debug: vi.fn(),
|
||||
info: vi.fn(),
|
||||
warn: vi.fn(),
|
||||
error: vi.fn(),
|
||||
}
|
||||
|
||||
// 设置测试环境变量
|
||||
process.env.NODE_ENV = 'test'
|
||||
process.env.VITE_APP_ENV = 'test'
|
||||
Reference in New Issue
Block a user