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))
}
在 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))
}