Покрытие тестирования шутки — ошибки, когда файлы не имеют тестов

#jestjs

#jestjs

Вопрос:

У меня есть тесты Jest в моем проекте React, и у меня еще нет покрытия для всех файлов. Тем не менее, я получаю эти ошибки:

 Failed to collect coverage from  /home/user/Development/VideoManager/VideoManagerClient/src/components/AppContent/VideoListLayout/VideoListLayout.js
ERROR: Cannot read property 'coverageData' of null
STACK: TypeError: Cannot read property 'coverageData' of null
  

Для упомянутого здесь файла еще не созданы модульные тесты. Я хочу, чтобы это просто отслеживалось как отсутствие покрытия и, таким образом, снижало всю мою статистику покрытия, а не выдавало ошибку.

Кроме того, когда я запускаю отдельные тесты в своей IDE, мои журналы заполняются еще большим количеством этих ошибок, потому что другие тесты не выполняются.

Как я могу это исправить?

PS. Вот моя конфигурация Jest:

 "jest": {
    "collectCoverage": true,
    "coverageReporters": [
      "html"
    ],
    "coverageThreshold": {
      "global": {
        "branches": 80,
        "functions": 80,
        "lines": 80,
        "statements": 80
      }
    },
    "collectCoverageFrom": [
      "src/**/*.{js,jsx,ts,tsx}",
      "!src/**/*.d.ts",
      "!src/serviceWorker.js"
    ],
    "resolver": "jest-pnp-resolver",
    "setupFiles": [
      "react-app-polyfill/jsdom"
    ],
    "setupFilesAfterEnv": [
      "<rootDir>/test/setupTests.js"
    ],
    "testMatch": [
      "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
      "<rootDir>/src/**/?(*.)(spec|test).{js,jsx,ts,tsx}",
      "<rootDir>/test/**/*.{js,jsx,ts,tsx}"
    ],
    "testPathIgnorePatterns": [
      "<rootDir>/test/setupTests.js",
      "<rootDir>/test/mock/.*",
      "<rootDir>/test/exclude/.*"
    ],
    "testEnvironment": "jsdom",
    "testURL": "http://localhost",
    "transform": {
      "^. \.(js|jsx|ts|tsx)$": "<rootDir>/node_modules/babel-jest",
      "^. \.css$": "<rootDir>/config/jest/cssTransform.js",
      "^(?!.*\.(js|jsx|ts|tsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
    },
    "transformIgnorePatterns": [
      "[/\\]node_modules[/\\]. \.(js|jsx|ts|tsx)$",
      "^. \.module\.(css|sass|scss)$"
    ],
    "moduleNameMapper": {
      "^react-native$": "react-native-web",
      "^. \.module\.(css|sass|scss)$": "identity-obj-proxy",
      "\.(css|sass|scss)$": "identity-obj-proxy"
    },
    "moduleFileExtensions": [
      "web.js",
      "js",
      "web.ts",
      "ts",
      "web.tsx",
      "tsx",
      "json",
      "web.jsx",
      "jsx",
      "node"
    ]
  }
  

Ответ №1:

У меня была точно такая же проблема при использовании jest version 24.1.0 and babel-jest version 23.6.0 .

Решил это, обновив babel-jest версию до 24.0.0 .