神刀安全网

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

今天提交到 github 的一个项目 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,就可以在项目文档里看到这样的图标啦:

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

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 使用 mocha+travis-ci+coveralls 的正确姿势

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
分享按钮