我正在学习Jest,运行第一个示例时,运行测试时出现错误。如果我将其包装在try / catch块中,则效果很好。该文档显示了没有try / catch的示例。为什么第一个示例错误?
错误
test('controller type error is correct', async () => {
expect(await pipe('string', podchain)).toThrow('VALIDATE PROPS: podchain must be an object.')
})
没有错误
test('controller type error is correct', async () => {
try {
expect(await pipe('string', podchain)).toThrow('VALIDATE PROPS: podchain must be an object.')
} catch (e) {
console.log(e.message)
}
})
答案 0 :(得分:1)
应该将.toThrow()
的期望用于函数,而await pipe('string', podchain))
并不是抛出的函数。在正常的异步功能中,try-catch块在promise的末尾被重写为.catch()
项,但以免重写不起作用。
我建议使用Jest .rejects
助手:
await expect(pipe('string', podchain)).rejects.toThrow();