Npm test --coverage никогда не завершается

Я использую создать-реагировать-приложение для создания реагирующего приложения. Когда я выполняю тест npm -- -- покрытие, тест никогда не существует. Тест npm фактически запускает тест реактивных скриптов. Есть идеи?

Npm test --coverage никогда не завершается

Не могли бы вы отобразить фактическую команду, которая выполняется. Он должен находиться в объекте скриптов в package.json. если в команде у вас есть - попробуйте удалить его. примером будет шутка. --покрытие

connormcwood 05.05.2019 13:59

@connormcwood мой объект сценария - "scripts": { "start": "запуск сценариев реакции", "build": "сборка сценариев реакции", "test": "тест сценариев реакции", "eject": "реагирование -скрипты извлекать" }

Anup 05.05.2019 14:03

Есть много потоков, связанных с реагирующими тестами, которые не завершаются. Вы можете попробовать следующее: установите для параметра test значение CI=true response-scripts test --env=jsdom, а не просто response-scripts test. См. github.com/facebook/create-react-app/issues/1137

connormcwood 05.05.2019 14:08

"test": "CI=true react-scripts test" решает проблему. Спасибо

Anup 05.05.2019 14:13

Качество, как предлагает поток, вы должны указать CI = true по какой-то особой причине.

connormcwood 05.05.2019 14:17

Не совсем особенная причина. В CI процесс тестирования должен завершиться, чтобы сервер ci мог получить результаты. При запуске из командной строки идея состоит в том, что вы позволяете ей открываться, чтобы вы могли выполнять тестовый запуск каждый раз, когда хотите что-то проверить. Следовательно, он запускается в режиме просмотра и запускается каждый раз, когда ваш код сохраняется.

jessehouwing 05.05.2019 14:31

Не могли бы вы добавить вывод командной строки вместо его изображения? См. Почему изображения текста, кода и математических выражений не рекомендуются?.

Super Jade 27.05.2019 05:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
27
7
34 755
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Покрытие не будет работать с 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.

источник: React документы

Windows (cmd.exe)

  • set CI=true && npm test

  • set CI=true && npm run build

Windows (Пауэршелл)

  • ($env:CI = "true") -and (npm test)

  • ($env:CI = "true") -and (npm run build)

Linux, macOS (Баш)

  • CI=true npm test

  • CI=true npm run build


НЕ включено в документы

Для Docker (узел и реакция):

docker run -e CI=true [myImage] npm run test

для (React) источник ответа выше: create-react-app.dev/docs/running-tests/#travis-ci

Akber Iqbal 25.08.2020 06:43

В большинстве случаев эта проблема может возникать по следующим причинам.

  1. Не говоря уже об обязательных npm-script аргументах в package.json файл. Если вы используете create-react-app для создания реагировать на приложение, то оно не примет никакой командной строки аргументы. Чтобы решить эту проблему, добавьте следующую строку под script отметить в package.json.

    "test": "react-scripts test --coverage --watchAll", //mark --watchAll=false if you want.
    
  2. Не говоря уже об обязательных аргументах конфигурации 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"

Другие вопросы по теме