TypeScript 中 assert.rejects 的等价物是什么?

What's the equivalent of assert.rejects in TypeScript?

在 node js 中我们使用 assert.rejects 断言由异步函数引起的错误。我发现 TypeScript 中缺少 rejects 方法,如何在 TypeScript 中断言异步错误?

JavaScript 和 TypeScript 都没有提供自己的 assert 功能。如果你搜索 "JavaScript assert" 或类似的(记住 TypeScript 是 JavaScript 加上静态类型和一两个其他小东西),你会发现各种库可以做到这一点,你可以从中选择。

我认为使用此功能可以解决您的问题:

import * as assert from 'assert';
async function assertThrowsAsync(fn, regExp) {
    let f = () => {};
    try {
        await fn();
    } catch(e) {
        f = () => {throw e};
    } finally {
        assert.throws(f, regExp);
    }
}

并在您的测试中使用它:

await assertThrowsAsync(async () => async_function_call_here(), /Error/);

非常好,但是编写辅助函数并始终引用它很乏味。

断言异步错误似乎我们也可以用这种方式来做:

try {
  await someOperation();
  assert(false, 'should not reach here');
} catch (ex) {
  assert(/Your Expected Error/.test(ex.message))
}