在未处理的 Promise rejection 中测试抛出异常的方法有以下几种:
try-catch
块:在测试代码中,可以使用 try-catch
块来捕获未处理的 Promise rejection,并验证是否抛出了预期的异常。在 try
块中,可以编写代码触发 Promise rejection,然后在 catch
块中断言异常的类型和内容。例如:try {
// 触发 Promise rejection
await Promise.reject(new Error('Expected rejection'));
// 断言不会执行到这里
assert.fail('Promise rejection not thrown');
} catch (error) {
// 断言异常类型和内容
assert.strictEqual(error.message, 'Expected rejection');
}
async
函数和 assert.rejects
方法:Node.js 提供了 assert.rejects
方法,可以方便地测试 Promise rejection。在测试代码中,可以使用 async
函数和 assert.rejects
方法来验证是否抛出了预期的异常。例如:// 使用 async 函数包装测试代码
async function test() {
// 使用 assert.rejects 断言 Promise rejection
await assert.rejects(
// 触发 Promise rejection
Promise.reject(new Error('Expected rejection')),
// 断言异常类型和内容
{ message: 'Expected rejection' }
);
}
// 执行测试函数
test().catch((error) => {
// 捕获测试中的异常
console.error(error);
process.exit(1);
});
chai-as-promised
是一个流行的断言库,可以方便地测试 Promise rejection。使用该库,可以通过链式调用 rejectedWith
方法来断言 Promise rejection 的类型和内容。例如:const { expect } = require('chai');
const chaiAsPromised = require('chai-as-promised');
// 使用 chai-as-promised 插件
chai.use(chaiAsPromised);
// 测试代码
it('should throw expected rejection', async () => {
// 触发 Promise rejection,并断言异常类型和内容
await expect(Promise.reject(new Error('Expected rejection')))
.to.be.rejectedWith('Expected rejection');
});
以上是几种常见的方法来测试未处理的 Promise rejection。根据具体的测试框架和需求,可以选择适合的方法来验证代码中是否正确处理了 Promise rejection。
领取专属 10元无门槛券
手把手带您无忧上云