hokui/hokui.net — pull request #37 by endaaman (2014-09-28 08:15:09+00:00)
Title: Unit Test

## Unit Test
### Karma
Karmaを使ったユニットテストを追加。Jasmineを使用。E2E(End-to-End)テストというユーザの挙動などを再現するテストもあって(そっちはKarmaではなくProtractorというものを使う)、Angular的にはそっちが本命っぽいんですが、今回はとりあえずユニットテスト。

### Run Test
`Karma`と愉快な仲間たち(プラグイン)と、Angularを手元で走らせるための`angular-mock`が必要なので
```
npm install&&bower install
```
してください。こっそりAngularのバージョンも上げてます。その後
```
npm test
```
でテストが起動します。気が向いたらGulpのタスクにするかもしれません。

### Coverage
coverageも取ってます。テスト後にプロジェクトのルートの`coverage`ディレクトリに生成されます。Travis CIはよくわからないのでまだ触ってないです。

## CoffeeScriptとcoverageの闇
あとkarmaのcoverageを取るモジュール(`karma-coverage`)が.coffeeを識別するときに`ibrik`というモジュールを使ってるんすが、そいつが`CoffeeScriptRedux`という別モノを使いやがるので、
`karma-coverage`をフォークして、`ibrik`を現在使っているCoffeeScriptを使うようにフォークしたものを使うように変更してます(辛さ)。
coverage取りつつCoffeeScriptのテストをするにはこれくらいしか方法がなさそうなので、公式でなんとかなるまで当面はこれでやっていきます。

## CoffeeScriptのビルドオプションの変更
今まで`bare: true`にしてて(デフォルトは`bare: false`)、各.coffeeファイルからモジュール名をグローバルな`appName`及び`serviceName`で参照していたんですが、
ibrikで`bare: true`でコンパイルにする方法がわからず、テストだとモジュール名が参照できないということになってしまったので、全体のビルド設定を`bare: false`(でもビルドできるよう)にしました(具体的にはグローバルな`appName`から、`@appName`という風にthisに閉じ込めた)。