如何检查 Jest 中异步抛出的错误类型?

Posted

技术标签:

【中文标题】如何检查 Jest 中异步抛出的错误类型?【英文标题】:How can I check the type of the error thrown asyncronously in Jest? 【发布时间】:2018-07-12 20:17:41 【问题描述】:

假设我有这样的功能:

const f = async () => 
  throw new Error('Huh???!');
;

我想测试它是否使用 Jest 抛出 RangeError(而不仅仅是 Error)。

test('f throws a RangeError', () => 
  expect(f()).rejects.toThrowError(RangeError);
);

但是这个测试通过了。

【问题讨论】:

我不知道我是否正确,但您可以尝试在 try/catch 中 await f() 并在 catch 中检查 typeof 错误。 这是一种选择,但rejects 是为了做awaiting 我刚刚发现***.com/q/46042613/1985912。 那不是async 【参考方案1】:

你可以在rejects之后使用toBeInstanceOf匹配器:

test('f throws a RangeError', () => 
  expect(f()).rejects.toBeInstanceOf(RangeError);
);

【讨论】:

以上是关于如何检查 Jest 中异步抛出的错误类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Jest 静默测试抛出的错误

如何使用 toThrow 和 Jest 断言异步方法抛出错误

如何找到方法可能抛出的错误类型并在 Swift 中捕获它们 [重复]

如何找出PHP代码块可能抛出的所有错误?

捕获回调函数引发的错误

纠正 PHPStan 在 Symfony 项目的 UserInterface 上抛出的类型提示错误