Fork me on GitHub

簡単なテストを動かしてみよう

設定ファイル-buster.js

Buster.JSではコンフィグファイルを作成し、そこへテストで使用するソースファイルやテストファイルの読み込みの定義や ブラウザ、Node環境どちらで実行するテストなのかなどを指定する必要があります。

デフォルトでは buster.js というファイル名のjsファイルが設定ファイルとして利用されます。

以下のような Buster-Project というディレクトリ直下に buster.js(設定ファイル) が有る場合はそれが利用され、 spec または test ディレクトリに buster.js(設定ファイル) が置かれている場合はそちらが利用されます。

Buster-Project
├── buster.js
├── spec/
│   └── buster.js
└── test/
    └── buster.js

通常はtestかspec ディレクトリに置いておくのが良いですが、任意のディレクトリにおいて buster test--config オプションで任意の場所にある設定ファイルのパスを指定して利用できます。

$ buster test
// test/buster.js or spec/buster.js

$ buster test --config path/to/buster.js
// 任意の場所の設定ファイルを指定できる

シンプルなNodeテストを動かしてみよう

使用するサンプルは以下のリポジトリにまとめられているので git clone するなどして取得して下さい

See also

busterjs-kumite/getting-started at master · azu/busterjs-kumite · GitHub
cd `git rev-parse --show-toplevel`/getting-started
codestre.am: streaming your code to the masses
サンプルを実際に動かしてるコンソール動画

Note

上記の動画は codestre.am で録画したのでコピペもできます。

今回の動かすサンプルは getting-started/ ディレクトリにあります。 まずは動かしてみましょう。

Buster.JS のインストール を参考にBuster.JSがインストール済みならば、 次のように getting-started/ ディレクトリで buster test コマンドを叩くことで テストが実行されテスト結果が表示されます。

$ cd getting-started/
$ buster test
My Test Case: ....
1 test case, 4 tests, 4 assertions, 0 failures, 0 errors, 0 timeouts

getting-started/ ディレクトリ直下には buster.js(設定ファイル) が置かれているので、 今回は --config オプションで設定ファイルのパスを指定しなくても自動で読み込まれます。

./getting-started/
├── ./buster.js
└── ./test
    └── ./test/simple-node-test.js

buster test によりテストが実行が確認出来たので、 buster.js(設定ファイル) の中身を見ていきます。

/busterjs-kumite/getting-started/buster.js

var config = module.exports;

config["My tests"] = {
    env : "node", // or "browser"
    tests : [
        "test/*-test.js"
    ]
};

BusterJSでは JsTestDriverjsTestDriver.conf のように 設定ファイルを読み込んでテストを実行しますが、 buster.js(設定ファイル) は名前の通りテスト設定もJavaScriptファイルで定義されます。

今回の設定ではnode環境で、testディレクトリにある *-test.js にマッチするテストファイルを読み込んで実行するという定義がされています。 testディレクトリ以下には simple-node-test.js しか無いので、そこに書かれているテストが実行されます。

/busterjs-kumite/getting-started/test/simple-node-test.js

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
var buster = require("buster");// for Node env
buster.testCase("My Test Case", {
    "assert.euqals a === B" : function(){
        assert.equals("foo", "foo");
    },
    "should be true" : function(){
        assert(true);
    },
    "should be false" : function(){
        refute(false);
    },
    "refute.euqals a !== B" : function(){
        refute.equals("foo", "bar");
    }
});

1行目は env : "node" の時に必要なだけなので、ブラウザテストの場合はなくても問題ありません。

buster.testCase 内で それぞれ以下のような形でテストケースを定義して使います。

"テスト名" : function(){
    // テストの中身
}

Buster.JSのアサーション関数の多く [1] は assert/refute メソッドからなっています。

assert と refure は対になる関係で、 assertは assert(true); ならテストがパスされ、 refuteは refute(false); ならテストがパスされます。

Important

assert <-> refute

assert/refute はそれぞれ同様のメソッド(equalsやsame等)を持っているので、 この2つのアサーション関数を利用してテストを書いていくことになります。

[1]BDD形式やモック関連等では異なる事がある