Fork me on GitHub

buster-amd

非同期モジュールをテストするために、AMD loaderを利用する。
自分でloaderを準備する必要があり、 require(deps, callback) で呼び出せる事を想定している。

インストール

npmを用いてインストールを行う。:

npm install buster-amd

設定ファイル

buster-amd extensionは pathMapper というオプションを一つだけ持っている。
pathMapper はoptionalで、Buster.JSのpathsをAMD用のIDに変換する。
pathMapper のデフォルトの動作は、 /test/my-test.jstest/my-test に変換する。(最初の’/’と拡張子を削除する。)

/busterjs-shodan/extensions/buster-amd/buster.js

var config = module.exports;
config["buster-amd"] = {
    environment: "browser",
    rootPath: ".",
    sources: ["src/main.js"],
    tests: ["test/*test.js"],
    libs: ["lib/require.js"],
    extensions: [require("buster-amd")],
    "buster-amd": {
//        pathMapper: function (path) {
//            return path.replace(/\.js$/, "").replace(/^\//, "");
//        }
    }
};

テスト・動作確認用ファイル

/busterjs-shodan/extensions/buster-amd/lib/require.js

RequireJS(http://requirejs.org/)を利用

/busterjs-shodan/extensions/buster-amd/src/main.js

define([], function() {
    return { name: "module" };
});

/busterjs-shodan/extensions/buster-amd/test/amd-test.js

define(["src/main"], function (mod) {
    buster.testCase("some test", {
        "test that fails":function () {
            assert.match(mod, {name:"wrong name"});
        },
        "test that succeeds":function () {
            assert.match(mod, {name:"module"});
        }
    });
});

内部動作について

buster-amdの内部動作については、

  1. /buster/load-all.js をロードする様に設定する。
  2. /buster/load-all.js がロードされたタイミングで require(deps, callback) を返す。

本機能は ramp-resources の機能を利用している。

/buster/load-all.js は以下の様なJavaScriptを生成して返している。

require(['test/amd-test'], function(t0) {
  console.log('loading');
  buster.run();
});