Проблема, которую я вижу в вашем коде, заключается в том, что expect().toThrowError()
ожидает синхронного исключения, но ваш код фактически отклоняет обещание. Бит, который может сбить с толку, это то, что вы видите throw new Error('foo');
в вашем handleResponse
. Это исключение, правда. Однако , поскольку этот код вызывается функцией async
, это исключение преобразуется в отклонение обещания. Таким образом, await get('sampleUrl')
не приводит к генерации синхронного исключения, а к отклонению асинхронного обещания.
Глядя на документацию Джеста , мне кажется, что вы должны делать:
return expect(expectedError()).rejects.toThrowError();
Вам нужно вызвать expectedError
, потому что это функция, которая возвращает обещание, и вам нужно использовать .rejects
, чтобы преобразовать отклонение в простое исключение, которое можно проверить с помощью .toThrowError()
. Обязательно верните утверждение или await
. В противном случае у вас будет свисающее обещание.