Skip to content

Commit 168e99e

Browse files
committed
fix(client): 修复测试挂起与 sm2 边界,客户端测试首次全绿
CI 的 client job 卡在 Test 步骤超 10 分钟,本地复现并定位两处存量缺陷 (源项目同样存在,此前因未跑过完整 vitest 而被登记为技术债): 1) usePomodoroStore.test.ts 无限挂起(§7 测试隔离) store 直接导入 @/lib/audio/SoundPlayer 单例,相位切换时调用 play()。 jsdom 无 AudioContext → play() 内部 preload() 发起 fetch('/sounds/*.wav', AbortSignal.timeout(5000)),8 处音效调用叠加出 大量悬挂异步任务,vitest 进程始终不退出。 测试原已 mock usePomodoroPersistence 与 achievements/evaluator, 唯独漏了 store 直接依赖的 soundPlayer——补齐 mock 即可,不改被测逻辑。 效果:该文件 32 个测试 2.6s 通过(此前无限挂起)。 2) sm2.ts goldenErrorMultiplier=0 边界(断言与实现矛盾) 实现用 multiplier > 0 排除 0,把它当无效值静默忽略 → 间隔保持 25; 测试期望 0 表示"最大程度缩短",收敛到最小间隔 1 天。 该选项全仓无生产调用方(仅 sm2.ts 定义 + sm2.test.ts 使用),属未接入的 预留 API,改实现对线上行为零影响。按测试即规格将下界改为 >= 0: 传 0 经 Math.max 收敛到 1,避免调用方意图被静默反转成"不缩短"。 上界仍为 < 1(1.0 的语义就是不调整);0.5→13、undefined→不应用,行为不变。 验证:vitest 23 文件 295 测试全过(12.9s,此前挂起); tsc app 与 electron 双 0 错。
1 parent ea1c43b commit 168e99e

2 files changed

Lines changed: 668 additions & 651 deletions

File tree

0 commit comments

Comments
 (0)