expect.assertions
важен при тестировании сценариев ошибок асинхронного кода и не является избыточным.
Если вы удалите expect.assertions
из своего примера, вы не можете быть уверены, что login
действительно сделалкинь ошибку.
it('calls the API and throws an error', async () => {
try {
await login('email', 'password');
} catch (error) {
expect(error.name).toEqual('Unauthorized');
expect(error.status).toEqual(401);
}
});
Допустим, кто-то изменил поведение login
, чтобы выдать ошибку, основываясь на какой-то другой логике, или кто-то повлиял на макет этого теста, который больше не вызывает выброс login
. Утверждения в блоке catch
не будут выполняться, но тест будет по-прежнему проходить.
Использование expect.assertions
в начале теста гарантирует, что если утверждения внутри перехвата заданыне работает, мы получаем сбой.