Тест React Jest не проходит после использования ключевого слова await - PullRequest
0 голосов
/ 03 июля 2019

Слева показан тестовый пример для изменения поля ввода.После ключевого слова await нет console.log, и утверждения не выполняются.Может ли кто-нибудь помочь мне исправить тест?

enter image description here

Функции макета определены следующим образом:

 const handleChangeFn = jest.fn();
  const onCityResolvedFn = jest.fn();

  const oneCity = [{ zipCode: 8852, name: 'Altendorf'}];

  mockedAxios.get.mockImplementation(() => Promise.resolve({ data: oneCity }));

  beforeEach(() => {
    handleChangeFn.mockReset();
    onCityResolvedFn.mockReset();
  });

1 Ответ

1 голос
/ 03 июля 2019

Вы не видите 'after' в консоли, потому что onPostalCodeChange является асинхронной функцией, и вы используете синхронный тест.

Прежде всего, вы должны сделать свой тест асинхронным.Добавьте «async» перед тестовой функцией:

it('should ....', async () => {...})

Затем добавьте небольшую паузу, прежде чем проверять, сколько раз была вызвана функция.Вы можете использовать такую ​​конструкцию, как это:

await new Promise(resolve => setTimeout(resolve, 100)) 

Эта конструкция означает «сон 100 мс»

Полагаю, в консоли вы увидите «после».

Еслипроблема остается, напишите здесь весь код вашего теста

PS Написание асинхронной функции в обработчиках React не является хорошей практикой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...