Что вызывает эту проблему: «Превышено время ожидания 10000 мс. Для асинхронных тестов и перехватчиков убедитесь, что вызывается« done () »;». - PullRequest
1 голос
/ 20 июня 2019

В веб-приложении VueJs мы написали более 500 тестовых случаев (во всех модулях), используя vue-test-utils и mocha-webpack, используя nyc для отчетов о покрытии. Рассмотрим каждый модуль в одном каталоге. Когда я запускаю тест-кейсы для определенного модуля, отчет успешно генерируется с результатами тест-кейсов (успешно или неудачно). Но при запуске всех тестов за один раз (путем установки пути в package.json) все тесты не выполняются и выдают следующую ошибку:

Превышено время ожидания 100000 мс. Для асинхронных тестов и хуков убедитесь, что вызывается «done ()»; если вы возвращаете обещание, убедитесь, что оно разрешено.

Я видел похожие вопросы, в которых предлагается использовать асинхронное ожидание в коде или увеличить время ожидания для решения этой проблемы, но почему get-тесты выполняются, когда я запускаю для определенного модуля, и выдают ошибку выше, когда я запускаю для всего проекта.

Я попытался установить --timeout 100000 в package.json, и это помогло для большого количества тестовых случаев, но при запуске всех (более 500) модульных тестовых примеров снова выдает ту же ошибку. Я думаю, что это связано с количеством тест-кейсов.

Что является причиной этой проблемы и как ее решить, чтобы все тесты были выполнены успешно .?

Редактировать Если какой-либо код в модульных тестах вызывает эту проблему с тайм-аутом, Как определить, какой тестовый набор вызывает эту проблему, потому что кажется невозможным определить источник проблемы, просматривая журналы в командной строке. Любые указатели будут полезны.

1 Ответ

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

После стольких попыток решения пришли к выводу, что решена вышеуказанная проблема:

  1. Когда мы запускаем тестовые случаи и появляются предупреждения, связанные с зависимостями затем он замедляет тесты и выдает проблему с тайм-аутом. Решение состоит в том, чтобы удалить эти предупреждения с помощью насмешливых действий, мутации, геттеры и заглушки дочерних компонентов.
  2. Добавление NODE_OPTIONS: 'node --max_old_space_size = 16384' в файл конфигурации увеличит память NodeJS. Это улучшилось выполнение юнит-тестов.
  3. Вместо использования beforeEach, используйте методы до и после монтаж компонентов в обертке. Также используйте метод уничтожения после уничтожить оболочку следующим образом:

let wrapper;

before(() => {
  wrapper = mount('component_name', {
    ...
  })
});

after(() => {
  wrapper.destroy();
});
...