Repository navigation
Commit 168e99e
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
0 commit comments