如何使用Jest测试异常未被抛出?

98

Jest文档没有展示一种断言未抛出异常的方法,只有抛出异常的。

expect(() => ...error...).toThrow(error)

如何断言抛出异常?


1
如果您有未捕获的异常,您的测试将失败。是否存在一种情况,除了一种类型之外,还可以抛出许多不同类型的异常? - Balázs Édes
如果您需要这种类型的测试,您会如何进行测试? - user9993
2个回答

125

您始终可以使用.not方法,如果您的初始条件为false,则该方法将有效。它适用于每个jest测试:

expect(() => ...error...).not.toThrow(error)

https://jestjs.io/docs/expect#not


1
我想知道这个程序能否处理返回类型为空的函数?我得到了“Error: expect(received).not.toThrowError() \n Matcher error: received value must be a function \n Received has value: undefined”的错误提示。 - Bence Szalai
3
@sbnc.eu 如果您将其包装在函数中,它也适用于void返回类型。expect(() => myvoidreturnfunction()).not.toThrow() - LiMuBei

34

在我的情况下,被测试的函数是异步的,我需要在调用它后进行进一步的测试,所以最终我得到了这个:

await expect(
  foo(params),
).resolves.not.toThrowError();

// My other expects...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接