"""百度 ASR:3301 时 WAV 重试。""" from __future__ import annotations import array from unittest.mock import MagicMock from app.config import Settings from app.services.baidu_speech import BaiduSpeechService def test_asr_pcm_or_wav_fallback_retries_on_3301() -> None: ok = {"err_no": 0, "result": ["好"]} pcm = array.array("h", [100] * 800).tobytes() client = MagicMock() client.asr = MagicMock(side_effect=[{"err_no": 3301, "err_msg": "q"}, ok]) svc = BaiduSpeechService( app_settings=Settings( BAIDU_APP_ID="1", BAIDU_API_KEY="k", BAIDU_SECRET_KEY="s", ) ) svc._client = client # type: ignore[attr-defined] r = svc.asr_16k_mono_pcm_or_wav_fallback(pcm) assert r == ok assert client.asr.call_count == 2 assert client.asr.call_args_list[0][0][1] == "pcm" assert client.asr.call_args_list[1][0][1] == "wav"