phi

I'm a Game Programmer and Frontend Engineer passionate about programming education. Math / C / C++ / C# / JavaScript / HTML5 / CSS3 / Python

phiaryjust a creator

JavaScript テストフレームワーク『Mocha』の使い方メモ

13 years ago

Node.js6連投. 第5弾!

Node.js もしくはブラウザ上で動く JavaScript テストフレームワーク『Mocha』の使い方について書きます.

最近, JavaScript による大規模開発も増えてきました. それに比例して重視されてくるのが, テスト環境の構築です.

そこで, node.js のテストフレームワークの筆頭『Mocha』の使い方を 簡単にまとめましたのでよかったら参考にして下さい.

Install

インストールは npm で簡単で行えます. 下記のコマンドを実行するだけです.

npm install -g mocha  

注意点としては, 今後の解説ではグローバルインストール前提で解説していくので, -g オプションを忘れないようにして下さい.

Test Code

今回実行するテストコードです. ファイル名は test.js として保存しています. 書き方は一般的なやつと一緒ですね.

var assert = require('assert');

describe('Number', function() {  
    describe('calc', function() {
        it('add', function() {
            assert(4+8 == 12);
        });
        it('sub', function() {
            assert(4-8 == -4);
        });
        it('mul', function() {
            assert(16*2 == 32);
        });
        it('div', function() {
            assert(8/2 == 4);
        });
    });
});

describe('Array', function() {  
    describe('#indexOf()', function() {
        it('should return -1 when the value is not present', function() {
            var arr = [1, 2, 3];
            assert(arr.indexOf(3) == 2);
            assert(arr.indexOf(5) ==-1);
            assert(arr.indexOf(0) ==-1);
        });
    });
});

今回は BDD で書きましたが, -u オプションで TDD や Exports も選ぶことができます.

ちなみにですが, 公式サイトで紹介されているサンプルは mocha をインストールするだけでは動きません. 当たり前のように should が使われているからです.

should は別モジュールなのでこいつを自分でインストールする必要があります.

今回のサンプルでは should の代わりに node.js でデフォルトでサポートされている assert を使っています.

Usage

テストの実行は下記のコマンドで行うことができます.

mocha --reporter spec test.js  

実行するとこんな感じで結果が表示されます.

success

失敗時はこんな感じ.

failure

Option

Mocha で使えるオプションです. 公式サイトより引用.

一部だけ, ざっくり翻訳してます.

 Usage: mocha [debug] [options] [files]

 Options:

   -h, --help                      使い方情報を表示
   -V, --version                   バージョンを表示
   -r, --require <name>            require するモジュールを指定
   -R, --reporter <name>           出力形式を指定
   -u, --ui <name>                 ユーザーインターフェースを指定(bdd|tdd|exports)
   -g, --grep <pattern>            pattern に一致した describe や it のみを実行<pattern>
   -t, --timeout <ms>              テストケースがタイムアウトする時間を指定 [2000]
   -s, --slow <ms>                 "遅い" と判断する閾値(基準)を指定[75]
   -w, --watch                     監視するファイルを指定. 変更される度にテストが実行されます
   -c, --colors                    色表示の有効化
   -C, --no-colors                 色表示の無効化
   -G, --growl                     Growl を有効化
   -d, --debug                     node.js のデバッガを有効化
   -b, --bail                      bail after first test failure
   --debug-brk                     enable node's debugger breaking on the first line
   --globals <names>               allow the given comma-delimited global [names]
   --ignore-leaks                  ignore global variable leaks
   --interfaces                    display available interfaces
   --reporters                     display available reporters
   --compilers <ext>:<module>,...  use the given module(s) to compile files

Book

唯一? の JavaScript のテスト駆動について扱っている本です. 私も最近読んでいるのですが, なかなかの良書です.

『テスト駆動JavaScript』

Reference

参考にしたサイト

次回は Mocha のブラウザ上でのテスト方法について紹介しようと思います. ブラウザ上でのテストだと何もインストールする必要がない上に DOM 関連のテストもできるので便利ですよん♪