Вызов 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.
Нет никаких очевидных деталей (строка «Пожалуйста, запустите ...» не похожа на сообщение об ошибке ») и никаких неудачных тестов, поэтому отладка затруднительна.
Рекомендации
getJest
. Если люди хотят использовать нелокальную версию Jest без запуска npm install
, я не уверен, почему пакет должен заботиться?console.warn
не затрагивая код выхода, потому что тесты могут работать без проблем, и предупреждение является достаточным признаком того, что выходные данные могут не отражать в точности то, что задумал пользователь.Error
чтобы упростить отладку - встроенная обработка ошибок Node гораздо более явна, чем console.error
за которым следует process.exit(1)
.process.exit(1)
а не дожидайтесь запуска всех тестов - если глобально запускать Jest при отсутствии локально определенной зависимости неприемлемо, то этого делать не следует. вообще не бегу.Спасибо, что подняли этот вопрос и за подробное описание проблемы. Честно говоря, я сам был расстроен из-за этого, и это определенно делает набор тестов Jest немного сложнее.
Я также согласен с тем, как это работает в настоящее время, не имеет никакого смысла, если Jest все равно завершит тестирование. Мне жаль, что вы потратили на это время.
Не могли бы вы отправить запрос на перенос?
Мое предложение таково:
process.exit(1)
.process.on('exit', () => console.log(chalk.red('The error message ')))
чтобы в конце теста мы получили красивое красное сообщение о том, что что-то не совсем так, как должно.Это позволит людям использовать неправильную версию Jest (что не рекомендуется, потому что могут быть критические изменения), но он все равно завершит тестовый запуск правильно и напечатает сообщение внизу. Что вы думаете?
@cpojer У меня это работает, спасибо за быстрый ответ! В ближайшее время представлю PR
@mmcgahan @cpojer Я вижу эту нефатальную ошибку при запуске Jest внутри дочернего пакета в монорепозитории рабочих пространств yarn. Похоже, что это может отображаться по ошибке, потому что способ поиска jest
не имеет отношения к пакетам, поднимаемым до корня монорепозитория?
Самый полезный комментарий
@mmcgahan @cpojer Я вижу эту нефатальную ошибку при запуске Jest внутри дочернего пакета в монорепозитории рабочих пространств yarn. Похоже, что это может отображаться по ошибке, потому что способ поиска
jest
не имеет отношения к пакетам, поднимаемым до корня монорепозитория?