首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何同时使用Require.js和Buster.js?

如何同时使用Require.js和Buster.js?
EN

Stack Overflow用户
提问于 2013-01-11 03:19:59
回答 2查看 1K关注 0票数 3

我正在尝试开始使用Buster.js,我同时安装了buster和buster-amd,但即便如此,我对Require.js的使用还是带来了一些问题。我的buster.js文件如下所示:

代码语言:javascript
复制
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"]
};

我的测试是这样的:

代码语言:javascript
复制
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()
});

但是当我尝试运行上面的代码时,我得到了:

代码语言:javascript
复制
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)

以前有没有人见过这样的事情,如果是这样,你对我做错了什么有什么建议吗?

附注:如果我删除extensions:行,我会得到一个类似的错误,除了它抱怨的是define而不是require。因此,在插件内部似乎发生了查找请求失败的情况……但是我不知道如何向插件提供Require。

EN

回答 2

Stack Overflow用户

发布于 2013-02-16 01:44:35

你有没有尝试在你的buster配置中添加require.js到libs而不是sources?因此,配置将如下所示:

代码语言:javascript
复制
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"]
};
票数 4
EN

Stack Overflow用户

发布于 2013-03-21 19:33:05

我采取了一种不同的方法。我没有禁用自动运行,而是使用Buster的异步测试用例格式,将测试用例定义为传递了run回调的函数。使用(没有详细记录的) resources:配置设置来允许require加载您的源代码。

代码语言:javascript
复制
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回调:

代码语言:javascript
复制
buster.testCase("AppCode",function(run) {
  require(["appCode"],function(appCode) {
    run({
      "it works": function() { assert(true) }
    })
  });
});

我已经创建了一个示例项目来展示这个方法require.js with buster.js。它有一个小的助手函数,可以同时执行testCaserequire调用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14265629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档