这两天想试一下coveralls,遂找了一个测试比较全的,使用mocha
的React + Redux
的Todo项目试验了一下,想着在这个基础上作一作练习,用用karma
、Jest
、AVA
,结果刚开始就遇到了一个坑,折腾了很久才解决。javascript
这个坑的大概是因为测试文件中使用了ES6
语法,使用istanbul cover
命令的时候就会报错,在网上找了不少方法试验,最终是成功的方法记录以下前端
一、 安装必要的包java
yarn add cross-env babel-plugin-istanbul nyc --dev
二、 在package.json
中添加以下内容node
{ … "nyc": { "require": [ "babel-register" ], "reporter": [ "lcov", "text" ], "include": [ # 测试文件路径,如 "test/**/*.spec.js" ], "sourceMap": false, "instrument": false } … }
或者新建一个.nycrc
文件放入react
{ "require": [ "babel-register" ], "reporter": [ "lcov", "text" ], "include": [ # 测试文件路径,如 "test/**/*.spec.js" ], "sourceMap": false, "instrument": false }
三、 在.babelrc
的env
中添加git
{ … "env": { … "test": { "plugins": [ [ "istanbul", { "exclude": [ # 测试文件路径,如 "**/*.spec.js" ] } ] ] } } }
四、 在package.json
的scripts
中加入github
"test:cov": "cross-env NODE_ENV=test nyc --reporter=text --reporter=lcov mocha test/**/*.spec.js"
五、 在终端执行yarn test:cov
,最终成功效果以下json
六、 最后再添加上.travis.yml
和.coveralls.yml
文件,再经过一些配置,就能够有
这种徽章了。这里就再也不赘述了,能够看下面的参考资料redux