blanketでmochaで書いたテストのカバレッジを測定する

mochaで書いたテストのカバレッジ(網羅率)を取るにはどうしたらよいのかと思っていたところ、blanketというのを見つけたので試してみました。

早速、blanketとmochaでテストを走らせた際にカバレッジを表示させられる様にするためのレポーターを追加します。

$ npm install --save-dev blanket 
$ npm install --save-dev mocha-spec-cov-alt

blanketの設定をpackage.jsonに追記します。data-cover-neverにはカバレッジ測定の対象としないディレクトリを明記します。ここではテストが入っているディレクトリとnpmのパッケージがインストールされているディレクトリを除外しています。

  "config": {
    "blanket": {
      "pattern": [
        ""
      ],
      "data-cover-never": [
        "node_modules",
        "test"
      ]
    }
  }

更に npm test を実行する際の設定を以下の様に修正します。mochaを呼び出す際に以下の2つのオプションを追加します。

  • レポーターにmocha-spec-cov-altを指定 -R mocha-spec-cov-alt
  • 実行時にblanketを読み込む様に指定 --require blanket

修正例としては以下の様な形。

  "scripts": {
    "test": "NODE_ENV=\"testing\" mocha -R mocha-spec-cov-alt --recursive --require blanket "
  },

ここまででテストのカバレッジがmochaの実行結果として表示される様になります。*1

npm test を実行すると

f:id:hideack:20150801114446p:plain

といった形でテストの末尾にカバレッジが表示される様になります。

参考

blanketjs.org

github.com

*1:コメントに従ってscripts修正しました