📅  最后修改于: 2023-12-03 15:03:12.142000             🧑  作者: Mango
在 Node.js 中,assert 模块提供了一组用于测试代码正确性的函数,其中 assert.throws() 函数可以用于测试代码是否抛出了预期的异常。
assert.throws() 函数接受两个参数:要测试的函数和期望抛出的错误对象或错误类型。如果被测试函数没有抛出错误,或者抛出的错误与期望不符,则该函数会抛出 AssertionError 错误。否则,函数执行成功,不会抛出任何异常。
假设我们有如下要测试的代码:
function divideByZero() {
return 1 / 0;
}
我们期望该代码会抛出一个 TypeError 错误,我们可以使用 assert.throws() 函数来测试:
const assert = require('assert');
assert.throws(divideByZero, TypeError);
上述代码会通过测试,因为 divideByZero() 函数会抛出一个类型为 TypeError 的错误。如果我们期望抛出的错误类型不是 TypeError,则测试会失败:
assert.throws(divideByZero, RangeError); // 抛出 AssertionError
assert.throws() 函数也可以接受一个正则表达式作为第二个参数,用于匹配错误消息。例如:
function throwError() {
throw new Error('oops');
}
assert.throws(throwError, /oops/);
上述代码会通过测试,因为抛出的错误消息包含了字符串 "oops"。如果我们期望的错误消息不匹配,则测试会失败:
assert.throws(throwError, /wrong/); // 抛出 AssertionError
assert.throws() 函数是 Node.js assert 模块中一个非常有用的函数,可以用于测试代码是否抛出了预期的异常。使用时需要注意避免被测试函数对外部环境产生影响,并在期望的错误类型或消息包含特定字符时进行特殊处理。