Причина этой проблемы: превышено время ожидания 10000 мс. Для асинхронных тестов и хуков убедитесь, что вызывается done () ;.

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

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

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

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

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

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


person Madhur Trivedi    schedule 20.06.2019    source источник
comment
Вопрос недостаточно конкретный. Невозможно ответить на этот вопрос, не увидев тестовых примеров. См. stackoverflow.com/help/how-to-ask. В том случае, если тесты содержат что-то, что может привести к более медленному тестированию при выполнении в пакетном режиме (db, что угодно), это проблема. В противном случае это не так.   -  person Estus Flask    schedule 20.06.2019
comment
Чтобы убедиться, что проблема во времени, почему бы не попробовать --timeout 1000000000 или что-то еще смехотворно высокое?   -  person apokryfos    schedule 21.06.2019


Ответы (1)


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

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

let wrapper;

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

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

person Madhur Trivedi    schedule 24.07.2019