Jest: Запуск глобального `jest-cli` должен предупреждать вместо ошибки

Созданный на 14 июл. 2016  ·  3Комментарии  ·  Источник: facebook/jest

Вызов process.exit(1) запускаемый при запуске глобально установленной версии Jest, приводит к нечетным результатам тестирования - даже когда все тесты пройдены, процесс возвращает ненулевой код выхода, и не сразу понятно почему.

Когда jest присваивается npm test (что является довольно распространенным соглашением), вы получаете:

Please run `npm install` to use the version of Jest intended for this project.
...
163 tests passed (163 total in 30 test suites, run time 3.292s)
npm ERR! Test failed.  See above for more details.

Нет никаких очевидных деталей (строка «Пожалуйста, запустите ...» не похожа на сообщение об ошибке ») и никаких неудачных тестов, поэтому отладка затруднительна.

Рекомендации

  1. Я бы предпочел полностью удалить тест для локальной версии Jest из пакета getJest . Если люди хотят использовать нелокальную версию Jest без запуска npm install , я не уверен, почему пакет должен заботиться?
  2. Если тест достаточно полезен, чтобы оставаться, он должен использовать console.warn не затрагивая код выхода, потому что тесты могут работать без проблем, и предупреждение является достаточным признаком того, что выходные данные могут не отражать в точности то, что задумал пользователь.
  3. Если предпочтительнее вернуть ненулевой код выхода, тест должен выдать реальный Error чтобы упростить отладку - встроенная обработка ошибок Node гораздо более явна, чем console.error за которым следует process.exit(1) .
  4. Если вы действительно не хотите выдавать ошибку, немедленно вызовите process.exit(1) а не дожидайтесь запуска всех тестов - если глобально запускать Jest при отсутствии локально определенной зависимости неприемлемо, то этого делать не следует. вообще не бегу.

Самый полезный комментарий

@mmcgahan @cpojer Я вижу эту нефатальную ошибку при запуске Jest внутри дочернего пакета в монорепозитории рабочих пространств yarn. Похоже, что это может отображаться по ошибке, потому что способ поиска jest не имеет отношения к пакетам, поднимаемым до корня монорепозитория?

Все 3 Комментарий

Спасибо, что подняли этот вопрос и за подробное описание проблемы. Честно говоря, я сам был расстроен из-за этого, и это определенно делает набор тестов Jest немного сложнее.

Я также согласен с тем, как это работает в настоящее время, не имеет никакого смысла, если Jest все равно завершит тестирование. Мне жаль, что вы потратили на это время.

Не могли бы вы отправить запрос на перенос?

Мое предложение таково:

  • Удалите process.exit(1) .
  • Выполните process.on('exit', () => console.log(chalk.red('The error message '))) чтобы в конце теста мы получили красивое красное сообщение о том, что что-то не совсем так, как должно.

Это позволит людям использовать неправильную версию Jest (что не рекомендуется, потому что могут быть критические изменения), но он все равно завершит тестовый запуск правильно и напечатает сообщение внизу. Что вы думаете?

@cpojer У меня это работает, спасибо за быстрый ответ! В ближайшее время представлю PR

@mmcgahan @cpojer Я вижу эту нефатальную ошибку при запуске Jest внутри дочернего пакета в монорепозитории рабочих пространств yarn. Похоже, что это может отображаться по ошибке, потому что способ поиска jest не имеет отношения к пакетам, поднимаемым до корня монорепозитория?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги