test(#1195): 添加useStep5Voice smoke test,确保vitest related能关联
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 31s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 41s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m27s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m3s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m36s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m43s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m48s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m6s
AI Code Review / AI Code Review (pull_request) Successful in 2m15s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m54s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m23s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 46s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 52s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1151h18m28s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1151h18m30s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 1151h18m30s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 1151h18m29s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 1151h22m22s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1151h22m24s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1151h18m29s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1151h22m50s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1151h18m30s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1151h22m51s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1151h22m52s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1151h22m53s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1151h22m54s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1151h22m54s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1151h51m39s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 1151h55m31s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 1151h55m59s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 31s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 41s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m27s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m3s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m36s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m43s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m48s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m6s
AI Code Review / AI Code Review (pull_request) Successful in 2m15s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m54s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m23s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 46s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 52s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1151h18m28s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1151h18m30s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 1151h18m30s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 1151h18m29s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 1151h22m22s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1151h22m24s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1151h18m29s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1151h22m50s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1151h18m30s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1151h22m51s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1151h22m52s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1151h22m53s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1151h22m54s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1151h22m54s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1151h51m39s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 1151h55m31s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 1151h55m59s
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
/**
|
||||
* useStep5Voice Hook smoke test
|
||||
* 确保 vitest related 模式能匹配到 useStep5Voice.tsx 的改动
|
||||
*/
|
||||
import { describe, it, expect, vi } from "vitest"
|
||||
import { renderHook } from "@testing-library/react"
|
||||
|
||||
// mock 所有子 Hook
|
||||
vi.mock("@/pages/generate/hooks/step5-voice/useVoiceAudio", () => ({
|
||||
useVoiceAudio: () => ({
|
||||
playingVoice: null,
|
||||
toggleVoicePlay: vi.fn(),
|
||||
}),
|
||||
}))
|
||||
|
||||
vi.mock("@/pages/generate/hooks/step5-voice/useVoiceRecommend", () => ({
|
||||
useVoiceRecommend: () => ({
|
||||
presetVoices: [],
|
||||
presetVoicesLoading: false,
|
||||
voiceRecommendLoading: false,
|
||||
voiceRecommendations: [],
|
||||
hasVoiceRecommend: false,
|
||||
handleVoiceRecommend: vi.fn(),
|
||||
}),
|
||||
}))
|
||||
|
||||
vi.mock("@/pages/generate/hooks/step5-voice/useTtsSynthesis", () => ({
|
||||
useTtsSynthesis: () => ({
|
||||
customVoiceText: "",
|
||||
setCustomVoiceText: vi.fn(),
|
||||
customAudioUrl: null,
|
||||
ttsError: null,
|
||||
ttsJobId: null,
|
||||
completedTtsJobId: null,
|
||||
synthesizeMutation: { isPending: false, mutate: vi.fn() },
|
||||
handleSynthesizeVoice: vi.fn(),
|
||||
resetTtsState: vi.fn(),
|
||||
}),
|
||||
}))
|
||||
|
||||
vi.mock("@/pages/generate/hooks/step5-voice/useSaveToLibrary", () => ({
|
||||
useSaveToLibrary: () => ({
|
||||
saveModalOpen: false,
|
||||
setSaveModalOpen: vi.fn(),
|
||||
saveName: "",
|
||||
setSaveName: vi.fn(),
|
||||
saveTagIds: [],
|
||||
setSaveTagIds: vi.fn(),
|
||||
saveNewTag: "",
|
||||
setSaveNewTag: vi.fn(),
|
||||
allTags: [],
|
||||
saveToLibraryMutation: { isPending: false, mutate: vi.fn() },
|
||||
handleOpenSaveModal: vi.fn(),
|
||||
handleConfirmSave: vi.fn(),
|
||||
handleAddTagInModal: vi.fn(),
|
||||
}),
|
||||
}))
|
||||
|
||||
vi.mock("@/pages/generate/hooks/step5-voice/useVoiceModeSelection", () => ({
|
||||
useVoiceModeSelection: () => ({
|
||||
handleSelectRecommendedVoice: vi.fn(),
|
||||
handleSelectPresetVoice: vi.fn(),
|
||||
handleSelectCloneVoice: vi.fn(),
|
||||
handleSelectClonedVoice: vi.fn(),
|
||||
handleOpenCloneModal: vi.fn(),
|
||||
handleCloneSuccess: vi.fn(),
|
||||
}),
|
||||
}))
|
||||
|
||||
vi.mock("@/api/voice-clone", () => ({
|
||||
VoiceCloneStatus: { READY: "ready", PROCESSING: "processing", FAILED: "failed" },
|
||||
}))
|
||||
|
||||
describe("useStep5Voice smoke test", () => {
|
||||
it("should import and render hook without crashing", async () => {
|
||||
// 动态 import 确保 mock 生效
|
||||
const { useStep5Voice } = await import("@/pages/generate/hooks/useStep5Voice")
|
||||
const { result } = renderHook(() =>
|
||||
useStep5Voice({
|
||||
selectedVoice: "",
|
||||
onSelectedVoiceChange: vi.fn(),
|
||||
voiceMode: "preset",
|
||||
onVoiceModeChange: vi.fn(),
|
||||
selectedClonedVoice: "",
|
||||
onSelectedClonedVoiceChange: vi.fn(),
|
||||
clonedVoices: [],
|
||||
addClone: vi.fn(),
|
||||
hasProcessing: false,
|
||||
cloneModalOpen: false,
|
||||
onCloneModalOpenChange: vi.fn(),
|
||||
titleText: "测试标题",
|
||||
}),
|
||||
)
|
||||
expect(result.current).toBeDefined()
|
||||
expect(typeof result.current.handlePlayCloneSample).toBe("function")
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user