在节点js中,我们使用assert.rejects
声明由异步功能引起的错误。我发现rejects
方法在TypeScript中丢失,如何在TypeScript中声明异步错误?
答案 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))
}