WebStrom7のKarmaでテスト環境組んでみた

WebStrom7EA (WS-131.130)のKarma機能を使うべく、Karmaでテスト環境を組んでみました。まずKarmaって何?からはじまって、ドキュメント一読。たいした量ないので全部読める。
http://karma-runner.github.io/0.10/index.html
テストランナーなんですね。テストは別と。Karmaへの組み合わせはアダプター書けばなんでも行けるような作りということですが、まずはアダプターがすでに用意されているものを検討。Jasmine、Mochaもあります。ここでまずはMochaを選ぶ。じゃあMochaって何?が続きます。ドキュメント一読。こちらもたいした量ではなく全部読める。
http://visionmedia.github.io/mocha/
テストツールです。こちらTDDの発展としてBDDなるものになっているけど、テストプログラミングレベルでの考え方は言葉が変わってるだけぐらい。テストそのものに対する思想は少々変わってるみたいですけどね。テスト対象の機能の担保を目的としていた今までのところ、もっとユーザー視点に近いところに移して、テスト対象の仕様の担保として、テスト粒度を大きめに、量を増やすべき方向性かな?で、さらにアサーションツールを選べるということで、次。
https://github.com/mikaelsc5/ExpectJS
この辺で組んでみましょう。。。と、動かねー。WebStorm7→Karmaの中ではrequireが動かないのでMochaからexpect.jsが見えない。Mochaをコンソールから叩いて単体で動かすともちろん動く。さらにKarmaをコンソールから叩いてももちろん動いた。じゃあ、テストツールからアサーションツールが見えなくてもいい、テスト+アサーション合体ツールでやればいいやね!それはJasmine。
http://pivotal.github.io/jasmine/
JasmineはちょうどMocha+expect.jsな領域。これでちょうど旧くはJUnitなところで、これにWebStormのKarma機能を足すと旧きはEclipseのテスト機能相当って感じ。それにしてもMochaとJasmineの違いはテストコードの書き方からすると99%ぐらい同じ。describe-it-expectってボキャブラリーも違いが無い。expectの後のアサーションの書き方が違うぐらいか。
f:id:masataka_k:20130922120626p:plain
Jasmineでやってもそもそもに、exportsやrequireがテストされる側にかかれてるとダメってことで、Node.jsなプログラムはテストできない。ブラウザものはできる。ということで結論は時期尚早。一旦終了。

WebStorm7の開発進捗をまって、またKarma機能には戻ってくる。まずはWebStormの外でテストしとけばいいやね。