Используя приложение create-response-app, при запуске тестов в моем конвейере CI, если пороги покрытия кода не соблюдены, я ожидаю, что консоль вернет ненулевой ответ.

package.json

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "test:coverage": "npm run test -- --coverage --watchAll=false",
  },
  "jest": {
    "collectCoverageFrom": [
      "src/components/**/*.js",
      "src/state/**/*.js",
      "src/templates/**/*.js",
      "src/routes/**/*.js"
    ],
    "coverageThreshold": {
      "global": {
        "branches": 80,
        "functions": 80,
        "lines": 80,
        "statements": 80
      }
    }
  }

При запуске test:coverage консоль сообщает, что пороговые значения не были достигнуты, но по-прежнему возвращает 0. Насколько я понимаю из документации Jest, при несоблюдении пороговых значений покрытия должна возвращаться ошибка.

https://jestjs.io/docs/en/configuration#coveragethreshold-object

Конкретно ...

If thresholds aren't met, jest will fail.

Кто-нибудь знаком с этой проблемой? Я сталкивался с проблемами GitHub с Jest и CRA со смешанными результатами, и большинство находок связано с устаревшими версиями.

8
Plummer 23 Окт 2019 в 20:56

1 ответ

Лучший ответ

Чтобы остановить дальнейшее выполнение при сбое команды:

command || exit 0

{
  "test:coverage": "npm run test -- --coverage --watchAll=false || exit 0"
}

Ref: не сбой сборки jenkins при сбое выполнения оболочки

2
JimmyLv 24 Фев 2020 в 13:50