javascript + mocha でカバレッジ測定をするには istanbul のラッパー nyc を使う for Windows

javascript + mocha でカバレッジ測定したい場合、「 istanbul を使うといいよ」という情報が多いが、情報が古いのか、成功しなかった。

手順

nyc という istanbul の CLI を使う。

$ cd (mochaを使ってるprojectのディレクトリ)

$ npm install nyc

$ .\node_modules\.bin\nyc --reporter=html mocha test.js

終わったら coverage\index.html をブラウザで開く。

注意点

全体的にマシンパワーを容赦なく使うため重い。メモリ 4GB の Intel(R) Core(TM) 2 Duo E8400 3.0GHz だと少々辛く、unittest みたいに細かいタイミングで実行するのが憚られるレベル。

  • nyc のインストールが完了するまでかなり重い
  • nyc 実行中もかなり重い
  • coverage\index.html から見る結果ページもかなり重い
    • 900KB ある js ファイルを見ようとしたら firefox がフリーズした

(参考) 古いやり方

最初調べていた時は以下のように istanbul cover コマンドを使う情報が多かった。

$ npm install istanbul

$ .\node_modules\.bin\istanbul cover --print mocha test.js

が、これだと ReferenceError: describe is not defined が出てしまう。他にも

  • mocha ではなく _mocha を使う 参考1
  • mocha -- test.js のように -- で区切る 参考2

など色んな派生パターンがあって、全部試したけどダメだった。