📜  Node.js assert.throws()函数(1)

📅  最后修改于: 2023-12-03 15:03:12.142000             🧑  作者: Mango

Node.js assert.throws()函数

在 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() 函数不会捕获被测试函数中的错误,而是让该错误向上抛出。因此,在使用 assert.throws() 函数时,要确保被测试函数不会影响到外部环境。
  • assert.throws() 函数会将期望的错误类型或消息转换为正则表达式进行匹配,因此如果期望的错误类型或消息包含正则表达式特定字符,需要进行特殊处理。
结论

assert.throws() 函数是 Node.js assert 模块中一个非常有用的函数,可以用于测试代码是否抛出了预期的异常。使用时需要注意避免被测试函数对外部环境产生影响,并在期望的错误类型或消息包含特定字符时进行特殊处理。