使用 mocha+travis-ci+coveralls 的正确姿势

使用 mocha+travis-ci+coveralls 的正确姿势

奇舞周刊 欧美男星 2016-03-27 21:30:27 133

今天提交到 github 的一个项目 core-wrappers(https://github.com/akira-cn/core-wrappers)用了 mocha 做单元测试,在集成到 travis-ci + coveralls 的时候遇到问题,google 不到比较合适的 mocha+travis-ci+coveralls 集成的办法,于是只好自己摸索了一遍,摸索结果记录如下:


关于依赖:


  • 首先需要使用 jscover 来转换文件(PS,这个插件好小众,才 20+ star)


jscover src test-cov
jscover test test-cov


可以将 src 和 test 目录下所有的文件都处理完丢到 test-cov 目录下。需要注意的是,如果文件夹下有 es6 或 es7 的文件,需要用 babel 先编译过,不然要报错的。



mocha test-cov --reporter=mocha-lcov-reporter > test-cov/coverage.lcov


有了这个 lcov 文件,travis-ci 需要它同步给 coveralls,这样才可以有测试覆盖率的结果。因此,在 .travis.yml 里面这么写:


after_script: "npm install coveralls && cd test-cov &&  cat coverage.lcov | ../node_modules/coveralls/bin/coveralls.js && cd .. && rm -rf ./test-cov && rm -rf ./test-app"


这样就完成了测试覆盖结果。


这里还有个小问题,因为 src 下的文件需要 jscover 转换,那么测试用例文件的 require 依赖也要依赖转换后的文件,可以通过很多办法处理,比如备份源文件然后覆盖,最后测试完成改回来,不过我采用了直接在测试用例里面用 try-catch 来加载包的一个办法:


var w;
try{  w = require("../test-cov/core-wrappers"); }catch(ex){  w = require("../src/core-wrappers"); }

最后,我们成功集成了 travis-ci 和 coveralls,就可以在项目文档里看到这样的图标啦:



取消

感谢您的支持鼓励,我会继续努力的!

文章地址:

用户邮箱:

打赏金额:USDT

点击”去打赏“,即可进行打赏支持本文章哦

发表评论