babel6(ES6)のテストコードカバレッジ
参考: https://github.com/douglasduteil/isparta
mochaでES6でかつReact.js(JSX)なクラスをテストする際にコードカバレッジが欲しいと思ったので調べてみた所、ispartaを使う事で可能らしいのでやってみた
ispartaのbabel6サポートに関して
(この記事投稿時)本日4.0.0がリリースされたのでそれを使えばbabel6サポートによるコードカバレッジを出力する事が可能
package.json
{
  "name": "test",
  "version": "1.0.0",
  "scripts": {
    "test": "_mocha",
    "test:cov": "node_modules/isparta/bin/isparta cover --include-all-sources --report text --report html node_modules/mocha/bin/_mocha --"
  },
  "devDependencies": {
    "babel-core": "^6.1.18",
    "babel-preset-es2015": "^6.1.18",
    "babel-preset-react": "^6.1.18",
    "chai": "^3.4.1",
    "isparta": "^4.0.0",
    "mocha": "^2.3.3"
  },
  "dependencies": {
    "react": "^0.14.2",
    "react-dom": "^0.14.2"
  }
}
.babelrc
{
  "presets": ["es2015", "react"]
}
src/HelloWrold.js
import React from "react";
class HelloWorld {
  say(name) {
    if (!name) {
      throw new Error("name is required");
    }
    return (
      <span>Hello World: {name}</span>
    );
  }
}
export default HelloWorld;
test/mocha.opts
--compilers js:babel-core/register
--recursive
test/HelloWorld-test.js
import { expect } from "chai";
import ReactDOM from "react-dom";
describe("HelloWorld", () => {
  it("say", () => {
    var HelloWorld = require("../src/HelloWorld").default;
    var instance = new HelloWorld();
    expect(instance.say("hoge").props.children[1]).to.be.equal("hoge");
  });
});
あとはtest:covを実行すればターミナル上では

ってな感じでcoverageディレクトリに出力されているので

余談
ツイートもしましたが
☓node_modules/.bin/_mocha
○node_modules/mocha/bin/_mocha
☓な方をやるとカバレッジが出力されない
— kinjouj (@kinjou__j) 2015, 11月 15