什么是TypeScript中的assert.rejects等效?

时间:2019-03-06 09:11:41

标签: node.js typescript assert

在节点js中,我们使用assert.rejects声明由异步功能引起的错误。我发现rejects方法在TypeScript中丢失,如何在TypeScript中声明异步错误?

3 个答案:

答案 0 :(得分:1)

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

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/);

答案 1 :(得分:0)

JavaScript和TypeScript都不提供自己的assert功能。如果您搜索“ JavaScript断言”或类似内容(请记住TypeScript是JavaScript加上静态类型以及另外一两个小东西),则会发现可以选择的各种库。

答案 2 :(得分:0)

@MrfksIV's answer非常好,但是编写该辅助函数并始终引用它很繁琐。

要断言异步错误,我们似乎也可以这样做:

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