Node.jsのテストがらみで(ぱっと)目に付いたパッケージ

Node.jsのテストがらみで(ぱっと)目に付いたパッケージ
========================

[TDD/BDD](http://www.atmarkit.co.jp/ait/articles/1403/05/news035.html)とまではいきませんが、以下の様なテストを出来るようなテスト手法を探りたい。。という思いから、今回はテスト関連のモジュールを調査し、とりあえずのとっかかりとして、利用するテスト環境を探し出すことを目的としています。

-   Node.jsで動く
-   書いたコードのテストが出来る
-   テストタイミングは、任意及び定期的など。。
-   テストコードは簡潔で、扱いやすい奴で。。
-   一応、トレンドには乗っておきたい。


尚、本ページの情報は、Web知識の浅い、Node.jsの扉を叩いている程度のレベルの私が、半日程度(2015.06.16時点)、ググった情報です。従って、誤りや、ずれてるところも多々あると思います。また、得た情報は基本、googleより検索し、引用したものが主です。(出来る限り引用元を記載しましたが漏れているのもあります)


まとめ
------

-   理由を問われると困ってしまうが、それなりにネット上の情報が豊富なので、以下を使ってみようと思う。
    -   テストフレームワーク： [mocha](https://github.com/mochajs/mocha)
    -   アサーションライブラリ：[power-assert](https://github.com/power-assert-js/power-assert)
    -   フロント側のテスト: [karma](https://github.com/karma-runner/)
-   タスク自動化ツールとの連携は、おいおい。。
-   以下の環境構築については別途。
    -   [mocha + power-assert環境の構築](http://qiita.com/gitseitanaka/items/ea47d261284879a1d774)
    -   [mocha + power-assert (+ karma)環境の構築](http://qiita.com/gitseitanaka/items/ef2404d710373fffee7e)


調査パッケージ(モジュール)
--------------

### mocha

-   [MIT](https://github.com/mochajs/mocha/blob/master/LICENSE)
-   https://github.com/mochajs/mocha
-   BDDスタイルでもTDDスタイルでも使えてグローバル変数のリーク検出までしてくれるテストフレームワークです。
    node.jsやブラウザから実行ですることもできます。また、非同期のテストも可能になってます。
-   アサーションライブラリが同梱されていないので、自分で選ぶ必要がある。(
    [power-assert](https://github.com/power-assert-js/power-assert) など)

### QUnit

-   [MIT](https://jquery.org/license/)
-   jQueryのテスト用に作られ、今もjQuery、jQuery-UIのテストに使われている。
-   jQueryには依存していない。

### Jasmine

-   [MIT](https://github.com/jasmine/jasmine/blob/master/MIT.LICENSE)
-   javascriptテストフレームワーク。
-   mochaへの移行も可能な模様。

### power-assert

-   [MIT](https://github.com/power-assert-js/power-assert/blob/master/MIT-LICENSE.txt)
-   https://github.com/power-assert-js/power-assert
-   assertのライブラリ
-   普通の比較演算子で普通にassert書けば、失敗時に各部分式の値を表示してくれる
    -   [こんな感じ](https://github.com/power-assert-js/power-assert#espower-code-above-then-running-under-nodejs)
-   http://azu.github.io/slide/sakurajs/power-assert.html
    参照すると、mochaをべーすに考える模様。
-   https://github.com/power-assert-js/intelli-espower-loader
    がスィート版？

#### espowerify

-   power-assert向けのBrowserify変換モジュール

### chai.js

-   [MIT](https://github.com/chaijs/chai#license)
-   https://github.com/chaijs/chai
-   assertのライブラリ

### should

-   [MIT](https://github.com/tj/should.js/blob/master/LICENSE)
-   https://github.com/tj/should.js/
-   assertのライブラリ

### Selenium Webdriver

-   Apache 2.0 License
-   UIもテスト出来るテストフレームワーク
-   とりあえず、UIは後回し。。。

### GoogleTrendsデータ

-   [こちら](http://flabo.io/code/20140627/01-javascript-tdd-jasmine-vs-qunit-2/)
    で以下に抽出してくれています。
    「QunitとJasmineが大きく人気を二分、それに続くMochaという感じ」だそうです。
    -   http://www.google.co.jp/trends/explore?hl=ja\#q=js+jasmine,+javascript+jasmine,+qunit,+js+mocha,+javascript+mocha&date=today+12-m&cmpt=q

### Karma

-   [MIT](https://github.com/karma-runner/karma/blob/master/LICENSE)
-   https://github.com/karma-runner/karma
-   Googleが造った、node.jsベースのJavaScriptテストランナー。Testacularから改名。
-   フロント側からのテストが行える。

### Testem

-   [MIT](https://github.com/airportyh/testem#license)
-   https://github.com/airportyh/testem
-   Karmaと似たような感じかなぁ。。

### タスク自動化ツール

ビルドの自動化やテストの自動化に用いる。
使い方はまだよくわからないが、[gulp](https://github.com/gulpjs/gulp)などで、定期的にテストを実行させれば、さらに素敵。。