Почему ошибка Jest без блоков try / catch для асинхронного теста - PullRequest
0 голосов
/ 06 февраля 2019

Я изучаю 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 голосов
/ 06 февраля 2019

Предполагается, что ожидание .toThrow() должно работать с функцией, а await pipe('string', podchain)) - не сгенерированная функция.В обычной асинхронной функции блоки try-catch переписываются так, чтобы они были .catch() терминами в конце обещаний, но в шутке эта перезапись не работает.

Я предлагаю использовать Jest .rejects помощник:

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

См. https://jestjs.io/docs/en/expect#rejects

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...