3

Buster.jsを使い始めようとしていますが、busterとbuster-amdの両方をインストールしましたが、それでもRequire.jsを使用すると問題が発生します。私のbuster.jsファイルは次のようになります:

var config = module.exports;
config["My tests"] = {
    autoRun: false,
    environment: "browser", // as opposed to "node"
    extensions: [require("buster-amd")],
    rootPath: "../",
    sources: ['ext/require/require.js'],
    tests: ["buster-test/*-test.js"]
};

そして私のテストはこのように:

define(['buster-test/buster'
], function(buster) {
    buster.spec.expose(); // Make some functions global
    describe("A Fake Test", function () {
        it("can be instantiated", function () {
            console.log('test')
        });
    });
    buster.run()
});

しかし、上記を実行しようとすると、次のようになります。

Uncaught exception: ./buster/load-all.js:1 Uncaught ReferenceError: require is not defined
TypeError: uncaughtException listener threw error: Cannot read property 'id' of undefined
    at Object.module.exports.uncaughtException (/usr/lib/node_modules/buster/node_modules/buster-test-cli/lib/runners/browser/progress-reporter.js:42:50)
    at notifyListener (/usr/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/bane/lib/bane.js:49:35)
    at Object.object.emit (/usr/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/bane/lib/bane.js:127:17)
    at Object.module.exports.bane.createEventEmitter.emitCustom (/usr/lib/node_modules/buster/node_modules/buster-test-cli/lib/runners/browser/remote-runner.js:289:14)
    at /usr/lib/node_modules/buster/node_modules/buster-test-cli/lib/runners/browser/remote-runner.js:92:16
    at PubSubClient.on._handler (/usr/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/ramp/lib/pubsub-client.js:73:43)
    at Object.Faye.Publisher.trigger (/usr/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/ramp/node_modules/faye/node/faye-node.js:385:19)
    at Object.Faye.extend.Set.Faye.Class.distributeMessage (/usr/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/ramp/node_modules/faye/node/faye-node.js:668:30)
    at Object.Faye.Client.Faye.Class._deliverMessage (/usr/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/ramp/node_modules/faye/node/faye-node.js:1070:20)
    at Object.Faye.Client.Faye.Class.receiveMessage (/usr/lib/node_modules/buster/node_modules/buster-test-cli/node_modules/ramp/node_modules/faye/node/faye-node.js:1007:12)

誰かが以前にこのようなものを見たことがありますか?もしそうなら、私が間違っていることについて何か提案がありますか?

PS行を削除すると、の代わりにextensions:文句を言うことを除いて、同様のエラーが発生します。したがって、requireの検索に失敗したのはプラグイン内で発生しているようです...しかし、プラグインにRequireを提供する方法がわかりません。definerequire

4

2 に答える 2

4

libsバスター構成の代わりにrequire.jsを追加しようとしましたsourcesか? したがって、構成は次のようになります。

var config = module.exports;
config["My tests"] = {
    autoRun: false,
    environment: "browser", // as opposed to "node"
    libs: [ 'ext/require/require.js' ],
    extensions: [require("buster-amd")],
    rootPath: "../",
    tests: ["buster-test/*-test.js"]
};
于 2013-02-15T17:44:34.967 に答える
2

私は別のアプローチを取ります。自動実行を無効にするのではなく、Buster の非同期テスト ケース形式を使用して、テスト ケースをrunコールバックを渡す関数として定義します。(十分に文書化されていない) resources:config 設定を使用して、require がソース コードをロードできるようにします。

config["Browser tests"] = {
    environment: "browser",
    libs: [ 'test/require_config.js','require.js' ],
    rootPath: "../",
    resources: ["your_source_code/**/*.js"],
    tests: ["buster-test/*-test.js"]
};

次に、テストで使用require()し、コードをロードしたらrun、テストでコールバックを呼び出します。

buster.testCase("AppCode",function(run) {
  require(["appCode"],function(appCode) {
    run({
      "it works": function() { assert(true) }
    })
  });
});

このメソッドrequire.js と buster.jsを示すサンプル プロジェクトを作成しました。とを同時に呼び出すための小さなヘルパー関数がtestCaseあります。require

于 2013-03-21T11:33:05.317 に答える