Expect.assertions в функции async / await - PullRequest
0 голосов
/ 15 февраля 2019

Из документации Jest:

Expect.assertions(number) проверяет, что определенное количество утверждений вызывается во время теста.Это часто полезно при тестировании асинхронного кода, чтобы убедиться, что утверждения в обратном вызове действительно были вызваны.

Это означает, что если мы тестируем отклонить случаев для promises (утверждения в catch), без expect.assertions promise могут быть разрешены, и наш тест пройдет .Тем не менее, мы просто не получили никаких ошибок внутри тестовой функции, и наше утверждение фактически никогда не выполняется.Другими словами, мы не проверяли то, что хотели.Мы получили ответ, но не на наш вопрос, потому что выполнено promise не провалит тест .Подводя итог, необходимо определить количество утверждений при проверке отклонений / ошибок.

В документах есть еще один пример:

test('the data is peanut butter', async () => {
  expect.assertions(1);
  const data = await fetchData();
  expect(data).toBe('peanut butter');
});

Поскольку мы используем шаблон async/await, мы будем ждать разрешения promise, и наши условия тестирования обязательно будут выполнены.

Какова цель expect.assertions здесь?Нужно ли нам expect.assertions в этом коде или это просто лучшая практика?

1 Ответ

0 голосов
/ 16 февраля 2019

Вы совершенно правы.

Использование expect.assertions необходимо при тестировании отклоненных обещаний с использованием catch.

Использование expect.assertions не обязательнопри проверке разрешенных обещаний или при проверке отклоненных обещаний с использованием .rejects.

Для такого простого теста, как этот, expect.assertions не особенно полезен.Для более сложных асинхронных тестов иногда бывает полезно добавить expect.assertions в качестве дополнительной меры безопасности, чтобы гарантировать, что тест ведет себя так, как ожидалось.

...