Я использую создать-реагировать-приложение для создания реагирующего приложения. Когда я выполняю тест npm -- -- покрытие, тест никогда не существует. Тест npm фактически запускает тест реактивных скриптов. Есть идеи?
@connormcwood мой объект сценария - "scripts": { "start": "запуск сценариев реакции", "build": "сборка сценариев реакции", "test": "тест сценариев реакции", "eject": "реагирование -скрипты извлекать" }
Есть много потоков, связанных с реагирующими тестами, которые не завершаются. Вы можете попробовать следующее: установите для параметра test значение CI=true response-scripts test --env=jsdom, а не просто response-scripts test. См. github.com/facebook/create-react-app/issues/1137
"test": "CI=true react-scripts test" решает проблему. Спасибо
Качество, как предлагает поток, вы должны указать CI = true по какой-то особой причине.
Не совсем особенная причина. В CI процесс тестирования должен завершиться, чтобы сервер ci мог получить результаты. При запуске из командной строки идея состоит в том, что вы позволяете ей открываться, чтобы вы могли выполнять тестовый запуск каждый раз, когда хотите что-то проверить. Следовательно, он запускается в режиме просмотра и запускается каждый раз, когда ваш код сохраняется.
Не могли бы вы добавить вывод командной строки вместо его изображения? См. Почему изображения текста, кода и математических выражений не рекомендуются?.





Покрытие не будет работать с Jest в режиме часов.
Так как "react-scripts test --env=jsdom" по умолчанию работает в режиме наблюдения, режим наблюдения должен быть отключен при создании вывода покрытия.
Следующая выдержка из package.json содержит строку «покрытие» для иллюстрации того, как можно добиться покрытия кода в приложении, которое было загружено с помощью create-реагировать-приложение.
Это просто измененный "тестовый" скрипт, куда добавлены опции --watchAll=ложь и --покрытие в комбинации:
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"coverage": "react-scripts test --env=jsdom --watchAll=false --coverage",
"eject": "react-scripts eject"
}
Обратите внимание, что использование отдельного двойного дефиса -- устарело.
-- --coverage часть не будет работать, и вы должны использовать одну из приведенных ниже команд, чтобы установить CI на true.
By default npm test runs the watcher with interactive CLI. However, you can force it to run tests once and finish the process by setting an environment variable called CI.
set CI=true && npm test
set CI=true && npm run build
($env:CI = "true") -and (npm test)
($env:CI = "true") -and (npm run build)
CI=true npm test
CI=true npm run build
НЕ включено в документы
docker run -e CI=true [myImage] npm run test
для (React) источник ответа выше: create-react-app.dev/docs/running-tests/#travis-ci
В большинстве случаев эта проблема может возникать по следующим причинам.
Не говоря уже об обязательных npm-script аргументах в
package.json файл. Если вы используете create-react-app для создания
реагировать на приложение, то оно не примет никакой командной строки
аргументы. Чтобы решить эту проблему, добавьте следующую строку под
script отметить в package.json.
"test": "react-scripts test --coverage --watchAll", //mark --watchAll=false if you want.
Не говоря уже об обязательных аргументах конфигурации jest в
файлы package.json или jest.config.js. Вы должны упомянуть файлы
которые нужно было включить в ваше тестовое покрытие под шутку
конфигурации. Добавьте следующие конфигурации в свой
package.json.
пакет.json
"jest": {
"collectCoverageFrom": [
"src/**/*.js",
"!src/index.js", // files you need to avoid in test coverage
"!src/hooks/*.js",
"!src/context/*.js"
],
"coverageThreshold": {
"global": {
"branches": 90,
"functions": 90,
"lines": 90,
"statements": 90
}
},
"coverageReporters": [
"html",
"text"
]
},
Я пробовал все решения выше, и у меня все еще висело сообщение: Ran all test suites..
Но этот маленький лайфхак помог:
"test:ci": "cross-env CI=true react-scripts test --forceExit --detectOpenHandles",
Объяснение: проблема возникла из-за того, что Jest не могла закрыть все процессы. Вышеуказанное является быстрым обходным путем. В идеале вы должны отслеживать процесс, который не дает Jest выйти.
Указание каталога работало в моем случае
"test:cover": "react-scripts test --coverage src"
Не могли бы вы отобразить фактическую команду, которая выполняется. Он должен находиться в объекте скриптов в package.json. если в команде у вас есть - попробуйте удалить его. примером будет шутка. --покрытие