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

如何运行Jest中test.each语句块内的单个测试用例?

运行Jest test.each内单个测试用例的方法

你的疏漏点

jest -t <name> 完全支持匹配test.each生成的动态测试用例,你之前执行后所有测试被跳过的核心原因是:你传入的名称没有匹配到test.each运行时生成的真实测试用例名称。

你代码里写的.add($a, $b)是模板字符串,Jest运行时会把$a、$b替换成对应用例的实际值,最终生成的三个测试用例名称分别是:

  • .add(1, 1)
  • .add(1, 2)
  • .add(2, 1)

如果你传的参数是带$符号的模板、或者字符串拼写和真实生成的名称不匹配,Jest找不到符合条件的测试,就会全部跳过。

具体使用方法

方法1:命令行用jest -t直接匹配

直接传入真实生成的测试用例名即可,注意如果名称包含空格、特殊符号,需要用引号包裹:

  • 单独跑a=1、b=1的用例:jest -t ".add(1, 1)"
  • 模糊匹配所有a=1的用例:jest -t ".add(1," (会匹配前两个用例)

如果测试外层包裹了describe块,还可以加上describe的名称做更精准的匹配,比如外层describe名称为算术方法测试,真实用例全称为算术方法测试 .add(1, 1),执行时传入:jest -t "算术方法测试 .add(1, 1)"即可。
如果测试用例值包含引号、反斜杠等特殊转义字符,匹配时需要对应做转义处理,避免匹配失败。

方法2:本地调试临时过滤用例

如果是开发阶段临时调试,不想修改命令行参数,可以直接修改test.each的用例数组,临时注释掉不需要跑的用例即可,调试完成后再恢复原数组:

// 临时只跑a=1、b=2的用例
test.each([
  // {a: 1, b: 1, expected: 2},
  {a: 1, b: 2, expected: 3},
  // {a: 2, b: 1, expected: 3},
])('.add($a, $b)', ({a, b, expected}) => {
  expect(a + b).toBe(expected);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:54:03