Promise
разрешается немедленно и синхронно, поэтому then
вызывается немедленно и expect
запускается до завершения теста. (then
обратные вызовы запускаются немедленно, если Promise
уже разрешен)
Если вы используете setTimeout
, чтобы помешать немедленному и синхронному разрешению Promise
, то проверка завершится неудачно, если вы не вернете Promise
:
function add1(n) {
return new Promise((res, rej) => {
setTimeout(() => { res(n + 1) }, 0); // use setTimeout
})
}
test('should add 1', function () {
expect.assertions(1)
// PASSES only if Promise is returned
return add1(10).then((n11) => {
expect(n11).toBe(11);
})
});