为什么Jest错误没有try / catch块进行异步测试

时间:2019-02-06 01:46:39

标签: javascript jestjs

我正在学习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)
    }
  })

1 个答案:

答案 0 :(得分:1)

应该将.toThrow()的期望用于函数,而await pipe('string', podchain))并不是抛出的函数。在正常的异步功能中,try-catch块在promise的末尾被重写为.catch()项,但以免重写不起作用。

我建议使用Jest .rejects助手:

await expect(pipe('string', podchain)).rejects.toThrow();

请参见https://jestjs.io/docs/en/expect#rejects