mocha + jscoverageを動かす

jscoverage - https://github.com/visionmedia/node-jscoverage

インストール

上記ページに下の方にnpmのは動かないって書いてあった。

Warning: the jscoverage npm module published by someone else does not work, clone this repo.

なのでgithubから落としてインストール。

[rossy@centos6 napp]$ su -
[root@centos6 ~]# cd /usr/local/src/
[root@centos6 src]# wget https://github.com/visionmedia/node-jscoverage/zipball/master -O node-jscoverage.zip
[root@centos6 src]# unzip node-jscoverage.zip
[root@centos6 src]# cd visionmedia-node-jscoverage-36b3ba5/
[root@centos6 visionmedia-node-jscoverage-36b3ba5]# ./configure
[root@centos6 visionmedia-node-jscoverage-36b3ba5]# make
[root@centos6 visionmedia-node-jscoverage-36b3ba5]# make install
[root@centos6 visionmedia-node-jscoverage-36b3ba5]# exit

準備

足し算のモジュールを用意して確認する。

[rossy@centos6 napp]$ tree
.
|-- lib
|   `-- sample.js
`-- test
    `-- sampleTest.js

2 directories, 2 files

sample.js

exports.plus = function(x, y) {
    return x + y;
};

sampleTest.js

var assert = require("assert")
var module = require('../lib/sample');
describe('sample', function(){
  describe('plus', function(){
    it('should return 3', function() {
      assert.equal(3, module.plus(2, 1));
    })
  })
})

動作確認

jscoverageしてカバレッジ用のコードをlib-covに出力する。

[rossy@centos6 napp]$ jscoverage lib lib-cov
[rossy@centos6 napp]$ tree
.
|-- lib
|   `-- sample.js
|-- lib-cov
|   `-- sample.js
`-- test
    `-- sampleTest.js

3 directories, 3 files

カバレッジ用にrequireの部分を書き換える。
sampleTest.js

var assert = require("assert")
var module = process.env.TEST_COV
   ? require('../lib-cov/sample')
   : require('../lib/sample');
describe('sample', function(){
  describe('plus', function(){
    it('should return 3', function() {
      assert.equal(3, module.plus(2, 1));
    })
  })
})

実行する。

[rossy@centos6 napp]$ TEST_COV=1 mocha --reporter html-cov > coverage.html 

開く。
f:id:sakshr:20120821192020p:plain