テストのカバレッジとは、そのテストが対象のうち、どれくらいの割合のコードを実行したかを表す数字です。数値が 100% に近ければそれだけテストが網羅されていることを示します。必ず 100% にしなければいけないとは思いませんし、 100% だから安心というわけでもないですが、一応の指標にはなります。

今回は babel を使ってコンパイルしたコードのカバレッジを取ることのできる isparta を使って babel mocha を使ったテストを計測してみます。

必要な知識

  • npm コマンド
  • mocha コマンド
  • ECMAScript 6

インストール

必要なモジュールをインストールしておきます。

$ npm install -g isparta
$ npm install -D mocha

簡単なテストの例を用意します。

// a.js

import assert from 'assert';

import { f } from './b';

describe('A', () => {

    it('B', () => {
        assert(f() === 100);
    });

});
// b.js

export function f() {
    return 100;
}

a.js がテストのコードで b.js がテスト対象です。

テストの実行

isparta コマンドに引数を指定します。

$ isparta cover --report html _mocha -- a.js

ispartamocha を実行しています。 -- 以降は mocha に渡す引数です。

実行するとテストが成功するはずです。同時に coverage というディレクトリの中に index.html というファイルができます。これがカバレッジのレポートです。開くと 100% になっているのがわかるはずです。

ここで b.js に絶対に実行されない文を書き加えてみます。

// b.js

export function f() {
    if (false) {
        return 1;
    }
    return 100;
}

if (false) { ... } の内側は実行されません。書き換えたあとで先ほどのコマンドを実行し、 index.html を確認するとその部分が実行されずカバレッジが下がることがわかります。

まとめ

  • ispartababel で変換しながらカバレッジを取れる