Files
frontend-miniapp/tests/unit/GlobalAudioPlayerLanguage.spec.ts
lyf 2edb6bd9f2
Some checks failed
CI / verify (push) Has been cancelled
适配H5讲解统一详情接口
2026-08-05 14:52:36 +08:00

58 lines
2.0 KiB
TypeScript

// @vitest-environment happy-dom
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { useGlobalAudioPlayer } from '@/composables/useGlobalAudioPlayer'
describe('全局讲解播放器语言切换', () => {
const player = useGlobalAudioPlayer()
beforeEach(() => {
player.close()
vi.stubGlobal('uni', { showToast: vi.fn() })
vi.spyOn(window.HTMLMediaElement.prototype, 'play').mockResolvedValue(undefined)
vi.spyOn(window.HTMLMediaElement.prototype, 'pause').mockImplementation(() => undefined)
vi.spyOn(window.HTMLMediaElement.prototype, 'load').mockImplementation(() => undefined)
})
afterEach(() => {
player.close()
vi.restoreAllMocks()
vi.unstubAllGlobals()
})
it('切换到粤语时只从当前统一详情的音轨数组选择,不产生额外 HTTP 请求', async () => {
const request = vi.fn()
vi.stubGlobal('uni', { request, showToast: vi.fn() })
await player.play({
id: 'mandarin-audio',
name: '测试讲解',
audioUrl: '/museum-assets/audio/mandarin.mp3',
language: 'zh-CN'
}, {
source: {
stopId: '1823450596800289',
lang: 'zh-CN',
voiceGender: 'male',
audioOptions: [
{ channelCode: 'standard.zh-CN.male', version: 'standard', languageCode: 'zh-CN', gender: 'male', playUrl: '/museum-assets/audio/mandarin.mp3' },
{ channelCode: 'standard.yue-HK.female', version: 'standard', languageCode: 'yue-HK', gender: 'female', playUrl: '/museum-assets/audio/cantonese.mp3' }
]
}
})
const switching = player.switchLanguage('yue-HK')
await expect(switching).resolves.toBe(true)
expect(request).not.toHaveBeenCalled()
expect(player.currentSource.value).toEqual(expect.objectContaining({
stopId: '1823450596800289',
lang: 'yue-HK',
voiceGender: 'female'
}))
expect(player.currentAudio.value).toEqual(expect.objectContaining({
language: 'yue-HK',
audioUrl: '/museum-assets/audio/cantonese.mp3'
}))
})
})