resolves
и rejects
требуют, чтобы вы либо возвратили Promise
:
test('justAnotherAsyncAwait', () => {
// return the Promise
return expect(justAnotherAsyncAwait()).resolves.toBe('HIIII'); // Success!
});
... или использовали async
проверить функцию и вызвать await
на Promise
:
test('justAnotherAsyncAwait', async () => { // <= async test function
// await the Promise
await expect(justAnotherAsyncAwait()).resolves.toBe('HIIII'); // Success!
});
Еще одно примечание:
async
функция всегда возвращаетPromise
и Promise
, которые он возвращает, преобразуются в возвращаемое значение или отклоняются с Error
, если выброшено Error
, поэтому обычно вам не нужно использовать try / catch
в функции async
body.
Вот простой пример:
const func = async (arg) => {
if (arg === 'pass') {
return 'HIIII';
}
throw new Error('something bad happened');
}
test('justAnotherAsyncAwait', async () => {
await expect(func('pass')).resolves.toBe('HIIII'); // Success!
await expect(func()).rejects.toThrow('something bad happened'); // Success!
});