sinkcup / coverage-badge

create badge from test coverage reports
https://www.npmjs.com/package/test-coverage-badge
MIT License
0 stars 0 forks source link

引入自动化测试 #10

Open sinkcup opened 3 years ago

sinkcup commented 3 years ago

看了下 vue 和 react 文档,都支持 jest,所以决定使用 jest

sinkcup commented 3 years ago

jest 报错:

SyntaxError: Cannot use import statement outside a module

image

查资料发现:jest 尚不能默认支持 ES6,https://jestjs.io/docs/ecmascript-modules

最终这样解决:https://stackoverflow.com/a/61652773/3606894

jest.config.mjs

testEnvironment: "jest-environment-node",
transform: {},
npm i cross-env --save-dev
  "scripts": {
    "lint": "eslint src/ tests/",
    "test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest"
  },
sinkcup commented 3 years ago

eslint 报错:

'test' is not defined

image

解决办法:https://www.npmjs.com/package/eslint-plugin-jest

npm i --save-dev eslint-plugin-jest

.eslintrc.yml

env:
  "jest/globals": true
plugins:
  - jest
sinkcup commented 3 years ago

命令行跑通 jest 没用,因为 test 关键靠 IDE 的「调试」。

没找到现成的文档,折腾了一会儿,还是只能运行,不能调试。

在 vscode 里配置 jest ES6:

  1. 安装插件 https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner
  2. 配置插件 Jest Command
NODE_OPTIONS=--experimental-vm-modules npx jest

image image

sinkcup commented 3 years ago

把一个文件的 行覆盖率做到了 100%,发现一个问题:codecov 分析的 jest clover xml 和 jest text 不一致

https://app.codecov.io/gh/sinkcup/coverage-badge/blob/main/src/main.js

image image

找到了以前有人提的 bug,一直没修:

https://github.com/codecov/codecov-node/issues/168 https://community.codecov.com/t/false-partials-in-code-coverage-javascript-typescript/2957

sinkcup commented 3 years ago

解决了,看有人提了句:上传 lcov.info 而不是 clover.xml

https://community.codecov.com/t/wrong-coverage-percentage/1775/12

image