Как узнать, почему функция прошла тест в Jest? - PullRequest
0 голосов
/ 09 января 2019

Есть ли способ показать, почему проверенная функция может пройти?

Когда я слежу за Шутом проверить раздел асинхронного кода

Там написано:

Обязательно верните обещание - если вы пропустите это выражение возврата, Ваш тест будет завершен до завершения fetchData.

И мой код:

function add1(n) {
  return new Promise((res, rej)=>{
    res(n+1)
  })
}


test('should add 1', function() {
    expect.assertions(1)
    //////////////////////////// I did not use RETURN here
    add1(10).then((n11)=>{
        expect(n11).toBe(11)
    })
});

Это все еще прошло, я хочу знать, как это может пройти?

1 Ответ

0 голосов
/ 09 января 2019

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);
  })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...