mocha + jscoverage
发布于 10 年前 作者 fengmk2 6167 次浏览 最后一次编辑是 6 年前

mocha在Release 0.13.0 已经支持 HTMLCovJSONCov 两种reporter, 那么显然可以非常简便地将 jscoverage 整合到mocha中, 进行代码覆盖率测试了.

如何做?

参照 mochaBest practices, 在 Makefile 中配置所有命令:

  1. 使用 jscoverage 命令行程序转换源代码

     lib-cov:
       [@rm](/user/rm) -rf ./$@
       [[@JSCOV](/user/JSCOV)erage](/user/jscoverage) lib $@
    
  2. 代码中根据环境变量 JSCOV 判断载入的模块是经过转换的 lib-cov 模块, 如: index.js

     module.exports = process.env.JSCOV 
       ? require('./lib-cov/ndir')
       : require('./lib/ndir');
    
  3. 增加 test-cov 命令, 设置reporter 为 html-cov

     test-cov: lib-cov
       [@JSCOV](/user/JSCOV)=1 $(MAKE) test REPORTER=html-cov > coverage.html && open coverage.html
    
  4. 执行 make test-cov 命令享受测试报告吧, 92%的覆盖率, 还不错吧.

http://ww4.sinaimg.cn/large/6cfc7910jw1dqguzalbuzj.jpg

http://ww3.sinaimg.cn/large/6cfc7910jw1dqguzmli6aj.jpg

完整Makefile

本文完整的Makefile 示例来自 ndir

SRC = $(shell find lib -type f -name "*.js")
TESTS = test/*.js
TESTTIMEOUT = 5000
REPORTER = spec

test:
  [@NODE_ENV](/user/NODE_ENV)=test ./node_modules/.bin/mocha \
    --reporter $(REPORTER) --timeout $(TESTTIMEOUT) $(TESTS)

test-cov: lib-cov
  [@JSCOV](/user/JSCOV)=1 $(MAKE) test REPORTER=html-cov > coverage.html && open coverage.html

lib-cov:
  [@rm](/user/rm) -rf ./$@
  [[@JSCOV](/user/JSCOV)erage](/user/jscoverage) lib $@

clean:
  rm -rf lib-cov
  rm -f coverage.html

.PHONY: test test-cov

有爱

^_^ 希望本文对你有用

原文链接: http://fengmk2.github.com/blog/2012/02/mocha-with-jscoverage.html

4 回复

第一次基于mocha的代码覆盖率尝试

呃,高端啊,很少做覆盖率的测试……

呃,看来写得太简单了,这篇以后慢慢完善吧。

不错的文章.

回到顶部