allinssl/frontend/packages/vue/hooks/test/title.spec.js

58 lines
1.7 KiB
JavaScript

import { describe, it, expect, beforeEach, afterEach } from 'vitest'
import { useTitle } from '../src/title'
import { nextTick } from 'vue'
describe('useTitle', () => {
const originalTitle = document.title
beforeEach(() => {
// 每个测试前重置标题
document.title = originalTitle
})
afterEach(() => {
// 每个测试后恢复原始标题
document.title = originalTitle
})
it('应该设置初始标题', async () => {
useTitle('新标题')
await nextTick()
expect(document.title).toBe('新标题')
})
it('应该响应式更新标题', async () => {
const title = useTitle('初始标题')
await nextTick()
expect(document.title).toBe('初始标题')
title.value = '更新的标题'
await nextTick()
expect(document.title).toBe('更新的标题')
})
it('应该能处理空标题', async () => {
useTitle('')
await nextTick()
expect(document.title).toBe('')
})
it('应该能处理特殊字符', async () => {
const specialTitle = '特殊 & 字符 < > " \''
useTitle(specialTitle)
await nextTick()
expect(document.title).toBe(specialTitle)
})
it('应该在不同组件之间共享标题', async () => {
// 模拟第一个组件
const title1 = useTitle('组件1标题')
await nextTick()
expect(document.title).toBe('组件1标题')
// 模拟第二个组件
const title2 = useTitle('组件2标题')
await nextTick()
expect(document.title).toBe('组件2标题')
// 第一个组件更新标题
title1.value = '组件1更新标题'
await nextTick()
expect(document.title).toBe('组件1更新标题')
// 第二个组件更新标题
title2.value = '组件2更新标题'
await nextTick()
expect(document.title).toBe('组件2更新标题')
})
})
//# sourceMappingURL=title.spec.js.map