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

Jest中toThrow断言测试未按预期执行问题求助

解决你的Jest异常断言测试问题

你的测试用例未达预期的核心原因是Jest的toThrow()断言需要通过包装函数来捕获异常,而不是直接执行会抛出错误的函数调用。

问题分析

当你直接写:

expect(calculate.add('one', -10)).toThrow();

此时calculate.add('one', -10)会在expect执行前就立即运行,抛出的错误会直接终止测试流程,根本没机会被Jest的断言机制捕获到——这就是测试结果不符合预期的关键。

修正后的测试用例

你需要把函数调用包裹在一个匿名函数里,让Jest在断言阶段才执行它,从而顺利捕获异常:

test('Test 5', () => { 
  // 用匿名函数包装要测试的函数调用
  expect(() => calculate.add('one', -10)).toThrow(); 
})

额外优化(可选)

如果想让测试更精准,还可以指定匹配的错误消息,确保抛出的是你预期的错误:

test('Test 5', () => { 
  expect(() => calculate.add('one', -10)).toThrow('problem'); 
})

这样修改后,你的测试应该就能正确识别函数抛出的异常,符合预期结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:42:46