はじめに

Buster.JS が久しぶりにアップデートされ、v0.7.4がリリースされました。

この記事は、Changelog — Buster.JS 0.7.4 documentation に掲載されている変更点などについて簡単にまとめたものです。
(翻訳ではないのでChangelogの方も見て下さい)

Buster.JS 0.7.4の変更点

  • buster-serverramp というモジュールになり新しくよりfastに
  • Windowsをサポート
  • assert.equals が 再帰的なオブジェクトを扱えるようになりました
    • 対象が文字列じゃない時はdeepEqualが使われるようになっています。
    • === の一致はassert.sameを使います
  • assert.equals== ではなくなりました。(== するassert自体がない?)
  • config の src にexcludeの設定を書けるようになりました

! をパターンの前に指定する事で、そのパターンに該当するものを無視できます。

src: ['src/**/*.js', '!src/debug/*.js']

@see : Allow to specify files to be excluded in config file · Issue #292 · busterjs/buster

  • 半分ぐらいのモジュールは1.x.yのstableになったよ
    • GithubのBuster.JSを見るとわかりますが、それぞれがモジュールとして細かく分かれています
  • デフォルトのコンソールレポーターが dots から変更
    • Config patterns  zsh 2013 09 18 01 25 46
  • Test runner Events に 設定が完了した時に発生する suite:configuration が追加されました。
    • 実行時に設定に対して色々出来るトリガー
  • バグバグfixfix

破壊的な変更

  • $ buster test のようなサブコマンドでも実行できましたが、 buster-test のような形式のみがサポートとなりました(buster-server, buster-testなどという感じで実行します)
  • configの environment (env) はデフォルト値として browser が設定されていましたが、明示的に browsernode を指定しないといけなくなりました
  • assert , refute , when など buster 以外にもグローバル変数が存在していましたが、デフォルトでは buster のみがグローバル変数となりました。

以前のように、 assert 等をそのまま使えるようにするには、
configの testHelpers に以下のようなスクリプトを読み込ませてエイリアスを貼るといいかと思います。

module.exports["My config"] = {
    environment: "browser",
    sources: [...],
    tests: [...],
    testHelpers: ["helper.js"]
};

この時に若干ハマるのが、testHelpersなどは ../ のように上の階層を指定することは出来ません。
上の階層にあるスクリプトを指定したい場合は rootPath を上の階層にして、そこから testHelpers を指定するようにします(あまり直感的ではないので、相対パスも許容して欲しい気がする)“

rootPath: "../",
testHelpers: ["helper/helper.js"]

バグ修正

  • Changelog の方を見て下さい
  • Object.prototype を拡張しているテストはスキップします

ChangeLogに載ってない変更点

普通にテストケースを書く分には恐らく使うことない機能ですが、
Buster.JSを拡張するような事をするときに触る部分に変更が入っています。

buster.assertions のかわりに、buster.referee を使うようになりました(互換性のため残っていますが、getterに注意メッセージが挟んであります)

Object.defineProperty(buster, "assertions", {
    get: function () {
        console.log("buster.assertions is provided for backwards compatibility. Please update your code to use buster.referee");
        return buster.referee;
    }
});

Buster.JSには自分でTest reportersを作成して利用する事が出来ますが、reporterのデフォルトが変わったのと同時に、既存のreporterの作りも変更されています。

おわりに

Buster.JS 0.7はかなり久しぶりのリリースになったわけですが、
0.7の内容自体は結構前から少しずつコミットはされていましたが結構停滞気味でした。

先月末あたりからメインの@cjohansenさんと@augustlさんのものすごく活発になって一気に0.7のリリースに進んだ感じです。

その中で@dwittner さんがかなり頑張って、Githubのissueの管理やドキュメントの整備、package.jsonの修正など細かい所をやっていたので、今回のリリースに繋がった感じがします。