SuperAPI AI 工具集

condition-based-waiting

测试与质量

查看项目

更新于 10-15 22:39

技能介绍

用途:解决测试中的竞态条件、时间依赖和不稳定通过/失败问题,用条件轮询取代猜测性的固定等待,核心原则是等待实际关心的条件而非猜测耗时。

主要能力与用法:提供通用轮询函数 waitFor(condition, description, timeoutMs=5000),默认每 10ms 轮询一次,超时抛出带描述的 Error。常见模式包括等待事件、等待状态(如 machine.state === 'ready')、等待数量(items.length >= 5)、等待文件存在、以及复合条件。示例:将 await new Promise(r => setTimeout(r, 50)) 替换为 await waitFor(() => getResult() !== undefined)。仓库另提供 example.ts,含 waitForEvent、waitForEventCount、waitForEventMatch 等面向具体调试会话的辅助函数。

适用场景:测试使用任意延迟(setTimeout、sleep、time.sleep());测试偶发失败或在负载下失败;并行运行时超时;等待异步操作完成。

限制与注意:不要用于测试真实计时行为(防抖、节流间隔);若确需任意超时(如工具每 100ms 触发、需 2 个 tick 验证部分输出),须先等待触发条件、基于已知时序而非猜测,并注释说明原因。常见错误:轮询过快浪费 CPU(建议 10ms)、无超时导致死循环(必须带超时与清晰错误)、在循环外缓存状态导致数据陈旧(应在循环内调用 getter)。

资料称在一次调试会话中修复了 3 个文件中的 15 个不稳定测试,通过率 60% 提升至 100%,执行时间快 40%;该效果仅为资料所述个例,其他环境与收益暂未提供。安装命令、支持平台与版本要求暂未提供。