這兩天想試一下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