Из документации 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
в этом коде или это просто лучшая практика?