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

Jest中如何断言异步函数抛出错误?

在Jest中断言异步函数抛出错误的规范方式

你当前写的代码是有效的,测试确实会通过,但Jest提供了更贴合异步场景的规范断言方式,分两种情况:

1. 直接测试异步函数本身

如果你的目标就是验证某个异步函数会抛出错误,用rejects匹配器更简洁,不需要额外包裹匿名函数:

const asyncFunc = async () => {
  return Promise.reject(new Error('Foo'));
};

// 断言Promise会reject,且抛出指定错误
await expect(asyncFunc()).rejects.toThrow('Foo');

2. 测试包含异步函数的代码块

如果需要在调用异步函数前执行一些前置逻辑(比如初始化数据、调用其他方法),你原来用匿名async函数包裹的方式也是规范写法,还可以加上具体错误信息让断言更精准:

await expect(async () => {
  // 这里可以添加前置操作,比如:
  // await someSetupFunction();
  await asyncFunc();
}).toThrow('Foo');

简单总结:

  • 直接测异步函数选rejects.toThrow,代码更简洁
  • 测包含异步函数的代码逻辑选匿名async函数包裹+toThrow,灵活性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:55:16