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

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

Node.js assert.rejects() 函数

在编写测试时,我们经常需要确保某个函数会抛出一个错误。Node.js 提供了 assert.rejects() 函数来验证在异步函数中会抛出的错误。

基本用法

assert.rejects() 函数接收两个参数:一个要测试的异步函数和一个可选的断言函数。它会等待异步函数执行完毕,并且会抛出一个异常,如果断言函数没有抛出异常,则测试通过。

下面是 assert.rejects() 函数的基本用法:

const assert = require('assert');

async function asyncFunction() {
  throw new Error('Oops! Something went wrong.');
}

async function test() {
  await assert.rejects(asyncFunction(), Error);
  console.log('Test passed!');
}

test().catch(console.error);

在上面的示例中,asyncFunction() 抛出一个错误,而 assert.rejects() 会验证是否确实抛出了 Error 类型的错误。如果验证通过,则会输出 'Test passed!'。

添加断言

除了验证是否抛出了异常,assert.rejects() 还允许我们添加更多的断言函数,以确保错误对象的属性和值等符合预期。

const assert = require('assert');

async function asyncFunction() {
  throw {
    code: 500,
    message: 'Internal Server Error'
  };
}

async function test() {
  await assert.rejects(asyncFunction(), { code: 500 });
  console.log('Test passed!');
}

test().catch(console.error);

在上面的示例中,asyncFunction() 抛出一个包含 codemessage 属性的对象。通过传递一个断言对象 { code: 500 },我们可以验证是否抛出了符合预期的错误对象。

使用断言函数

assert.rejects() 还允许我们传递自定义的断言函数,以更加灵活地验证错误对象。

const assert = require('assert');

async function asyncFunction() {
  throw {
    code: 500,
    message: 'Internal Server Error'
  };
}

function assert500Error(err) {
  assert.strictEqual(err.code, 500);
  assert.strictEqual(err.message, 'Internal Server Error');
}

async function test() {
  await assert.rejects(asyncFunction(), assert500Error);
  console.log('Test passed!');
}

test().catch(console.error);

在上面的示例中,我们定义了一个名为 assert500Error 的自定义断言函数,它会验证错误对象的 codemessage 属性是否与预期相符。通过将这个函数传递给 assert.rejects(),我们可以实现更加灵活的错误验证。

结论

assert.rejects() 函数是 Node.js 中用于测试异步函数抛出错误的有用工具。通过准确地验证错误类型、属性和值,我们可以编写更强大、健壮的测试用例。

更多关于 assert.rejects() 函数的详细信息可以参考 Node.js 文档