こんにちは!うきょーです!だるくなくJavaScript開発できる環境を探しています。
というわけでタイトル通りなんですが、Mocha + Testem + HTML-Cov環境を試してみようと思うので、それの作り方です。 想定している使い方としては、普段はTestemを使ってChrome、Firefox、Safariあたりでテストを回しつつ、たまにカバレッジを確認して〜くらいの割と普通な感じです。 CIは今回はやりません。本当は同じランナーでやりたかったんですが、めんどいので分けました。 もっといいやり方知ってる人いたら教えてください!
必要な物の準備
せっかくなので? node 0.10.1 を使います。
1
|
|
必要なモジュールをいれます。
- testem
- mocha
- jscoverage
- json2htmlcov
- mocha-phantomjs
- phantomjs
1
|
|
1
|
|
メンドーだったので僕はMakefile
使ってますが、grunt
とかがいいですって人はそれもいれるといいと思います。
chaiとsinonをとってくる
chaiとsinonを使いたいので、とってきます。sinon-chaiは別にいらないかなーと思ってる子なので入れてません。
/test/vendor
みたいなところに配置しておきます。
1 2 |
|
適当にテスト用のjs書く
サンプル用に適当に
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
テストはこんな感じ、NO
の方は通らないようにしてあります。
1 2 3 4 5 6 7 8 9 10 11 |
|
testem.jsonを書く
chaiやsinonを一緒に混ぜるようにして、testem.json
を作ります。
1 2 3 4 5 6 7 8 9 |
|
これでtestem側は終わりです。走らせてみましょう。
1
|
|
テストしたいブラウザで http://localhost:7357
を開きます。あとは開きっぱでよいです。
テストしてくれます、便利ですね。
HTMLCovでカバレッジを出す
こういう感じにカバレッジを出す事ができます。
適当にいろいろなブラウザでテストした結果をマージできると理想だけど、面倒そうなのでphantomjsで・・・ 、というかサポートされていないのかな。 こういうのもあったけど今回はスルーで。
手順としては
jscoverage
で対象のjsを変換mocha-phantomjs
で実行してjsoncov
の形で吐き出すjson2htmlcov
を通して HTMLCov へ変換
と、ちょっと面倒くさい。
ランナーを用意する
mocha
のランナーを用意します。
1
|
|
吐き出されたのを適当に coverage-runner.html
みたいなのにリネームして、必要なファイルを読み込むようにする。
1 2 3 4 5 6 |
|
僕はカバレッジに使うjsをcover
というディレクトリに吐き出すようにしたので、こんな感じで。
mocha-phantomjs
を使えるようにブートを置き換えます。
1 2 3 4 5 6 7 8 |
|
カバレッジを出すコマンド
さっきの手順に従ったコマンドで実行します。
1 2 |
|
こんな感じで cover.html
が作られるので、あとはそれをopen
すればよいです。
ちょっと面倒ですが、簡単な部類でしたね。
ちなみに
僕は Buster.JS 派です。