You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jest中test.each()结合异步函数执行结果异常,是否为Bug?

Jest test.each 搭配异步函数未正确执行所有用例的问题

你遇到的问题大概率是测试用例命名重复导致的。当使用test.each批量生成测试时,如果标题没有加入动态占位符,所有生成的测试用例会共用同一个名称,Jest在这种场景下可能不会完整执行所有迭代,或者测试报告里只展示第一个用例的结果,看起来像是第二个用例没被检查。

修正方法

给test.each的标题添加占位符,让每个测试用例拥有唯一名称:

async function getVal(n) {
  return n === 1 ? "one" : "two";
}

test.each([
  [1, "one"],
  [2, "SOME VALUE"]
])("getVal(%d) 应返回 '%s'", async (n, expected) => {
  const val = await getVal(n);
  expect(val).toEqual(expected);
});

这里用%d(数字占位符)和%s(字符串占位符)对应测试数据里的参数,生成的测试用例名称会变成getVal(1) 应返回 'one'和getVal(2) 应返回 'SOME VALUE',Jest会正确执行两个用例,第二个用例的预期值错误时会正常触发失败。

另外建议检查你的Jest版本,旧版本(比如26.x及更早)可能存在test.each与异步函数兼容的bug,升级到最新稳定版(如29.x系列)也能避免这类问题。

内容的提问来源于stack exchange,提问作者atava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:02:53