Это предупреждение относится к тому факту, что в тесте происходит ошибка, которая не обрабатывается. Настоящая проблема в том, что ваш тест ничего не тестирует - есть expect
без соответствия. Вот что должно быть:
return expect(theFunctionFail()).rejects.toEqual(new Error());
См. Документы Jest для .rejects
: https://jestjs.io/docs/en/tutorial-async#rejects
Примечание: также можно использовать try/catch
, но вам нужно либо await
, например:
it('theFunctionFail', async () => {
expect.assertions(1);
try {
await theFunctionFail();
} catch (err) {
expect(err).toEqual(new Error());
}
});
Или верните асинхронную функцию и поймайте ошибку (убедитесь, что вы вернули функцию):
it('theFunctionFail', () => {
expect.assertions(1);
return theFunctionFail().catch(err => {
expect(err).toEqual(new Error());
});
});
expect.assertions(number)
- это хороший способ убедиться, что все ваши expect
вызываются при тестировании асинхронного поведения.
Кроме того, если вы добавите сообщение об ошибке, например, new Error('oh no!')
, вы наверняка будете знать, что уловили правильную ошибку, и ее будет легче отлаживать.