笑话发现测试但没有收集报道

时间:2019-08-11 14:54:44

标签: reactjs typescript jestjs istanbul

我尝试使用{p> 3收集测试覆盖率

yarn test --coverage # i.e. "react-scripts test --coverage"

我开玩笑的配置是这样的:

  "jest": {
    "collectCoverageFrom": [
      "src/**/*.ts*"
    ],
    "coverageThreshold": {
      "global": {
        "lines": 90,
        "statements": 90
      }
    }
  }

我的文件夹结构如下:

.
├── package.json
├── postcss.config.js
├── public/
├── README.md
├── src/
│   ├── App.css
│   ├── App.test.tsx
│   ├── App.tsx
│   ├── assets/
│   ├── components/
│   │   ├── Emoji/
│   │   │   ├── Emoji.test.tsx
│   │   │   ├── Emoji.tsx
│   │   │   └── index.ts
│   │   └── Home/
│   │       ├── Home.css
│   │       ├── Home.test.tsx
│   │       ├── Home.tsx
│   │       └── index.ts
│   ├── index.css
│   ├── index.tsx
│   ├── react-app-env.d.ts
│   └── serviceWorker.ts
├── tsconfig.json
├── yarn-error.log
└── yarn.lock

Jest能够找到所有测试,但无法收集覆盖率:

 PASS  src/components/Home/Home.test.tsx
 PASS  src/components/Emoji/Emoji.test.tsx
 PASS  src/App.test.tsx
----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |        0 |        0 |        0 |        0 |                   |
----------|----------|----------|----------|----------|-------------------|

Test Suites: 3 passed, 3 total
Tests:       3 passed, 3 total
Snapshots:   0 total
Time:        3.432s
Ran all test suites.

我想念什么?我应该在配置中添加些什么以获得覆盖?

欢迎任何提示:)

尝试

  1. 将全局模式更改为"src/**/*.{js,jsx,ts,tsx}"
  2. 先删除node_modules,然后再运行yarn重新安装所有内容。
  3. 删除node_modulesyarn.lock,然后重新安装所有内容,这导致this project,我试图解决安装该特定依赖项的问题,但是没有用。
  4. 从GitHub克隆存储库,然后在新版本上运行命令。
  5. 切换到其他节点版本(v10.16.2和v11.7.0)。

8 个答案:

答案 0 :(得分:11)

不一定是原始提问者的解决方案,但我遇到了完全相同的问题,这是我的解决方案:

我发现在将玩笑升级(从23升级到26)时,我遇到了这个问题,解决方案是使用--no-cache选项运行。大概他们在内​​部更改了有关这些覆盖率报告的内容,以使缓存的数据不兼容。

答案 1 :(得分:2)

在Linux Mint 19.2上似乎运行良好。我建议将您的Jest配置更改为更灵活的东西:

"jest": {
    "collectCoverageFrom": [
      "src/**/*.{js,jsx,ts,tsx}",
      "!<rootDir>/node_modules/"
    ],
    "coverageThreshold": {
      "global": {
        "lines": 90,
        "statements": 90
      }
    }
  }

如果使用的是package.json,然后更改npm测试脚本(使用yarn,您可以追加--coverage,例如:yarn test --coverage;但是,使用npm,它将被忽略)。所以我建议您这样做:

 "test": "react-scripts test --coverage",

或者,我建议使用yarn而不是npm。要安装纱线,请使用以下methods之一。

工作: enter image description here

答案 2 :(得分:1)

我在评论中说的快速解决方案,改用--watchAll,例如:react-scripts test --coverage --watchAll

仅供参考,我认为理想情况下,我们应该使用--watch,它只能在更改的文件上运行,但这给我带来了同样的麻烦。我认为这与tree ploting package这个问题以及'--coverage --watch' should calculate coverage for all files at first iteration这个问题有关。我不确定为什么它对某些人而不对您有用,大概与Git和文件暂存有关。

答案 3 :(得分:1)

帮助我的是那个而不是

npm run test

npm run test --watchall

我是这样做的:

npm run test a

npm run test a -- --coverage

答案 4 :(得分:0)

就我而言,我正在测试带有选项cacheDirectory: '.jest/cache'的React Native / Expo应用程序。删除.jest目录已经为我解决了这个问题。

答案 5 :(得分:0)

将此添加到您的package.json

alert(...)

这将解决您的问题,而不是指定很多这些命令

答案 6 :(得分:0)

去过那里... 您在 Jest 配置中还缺少一个参数:

collectCoverage: true

答案 7 :(得分:0)

就我而言,我可以通过删除缓存并执行 npm install 来开始工作。在 windows 缓存位置 (~\AppData\Roaming\npm-cache)