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

JavaScript中如何使用assert测试函数是否抛出预期错误信息

问题原因
  • 你当前使用的assert.strictEqual会在参数计算阶段就直接执行sum(4, "5"),这个调用本身会抛出未被捕获的错误,不会进入断言的对比逻辑,因此程序直接终止。
解决方案

Node.js内置的assert模块提供了专门用于验证函数抛出预期错误的API assert.throws,该API会自动执行传入的函数并捕获抛出的错误,和预期值做对比,匹配成功则测试通过无输出。

正确代码示例

const assert = require('assert');

function sum(a, b) {
  if (typeof a !== 'number' || typeof b !== 'number') {
    throw new Error('parameters must be numbers');
  }
  return a + b;
}

// 写法1:匹配错误信息正则即可
assert.throws(() => sum(4, "5"), /parameters must be numbers/);

// 写法2:完整匹配错误实例
assert.throws(() => sum("4", 5), new Error('parameters must be numbers'));

// 写法3:同时匹配错误类型和信息
assert.throws(() => sum("4", "5"), {
  name: 'Error',
  message: 'parameters must be numbers'
});
注意事项
  • 务必将可能抛出错误的调用包裹在匿名箭头函数内,不要直接执行函数,否则还是会提前触发未捕获错误。
  • 如果需要验证函数没有抛出错误,可以使用对应的assert.doesNotThrow API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:39:01