我如何使用Require.js和Buster.js一起
How can I use Require.js and Buster.js together?
我正试图开始使用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)
有没有人见过这样的东西,如果有,你有什么建议,我做错了什么?
注:如果我删除extensions:
行,我得到一个类似的错误,除了它抱怨define
而不是require
。因此,似乎无法找到需要是发生在插件内部…但是我不知道如何提供需要的插件。
您是否尝试将require.js添加到libs
而不是sources
上的buster配置?所以配置看起来像这样:
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"]
};
我采取了不同的方法。我没有禁用自动运行,而是使用Buster的异步测试用例格式,其中您将测试用例定义为传递run
回调的函数。使用(没有很好的文档)resources:
配置设置来允许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
。
相关文章:
- 一种将Apache Thrift JS绑定与Backbone.JS一起使用的方法
- CKEditor如何与React.js一起使用,以允许React识别它
- 从服务器端获取一个数组,以便稍后与JS一起使用
- 尝试将DOMParser与node.js一起使用
- 如何将 serializeObject() 与 require.js 一起使用 错误:无法读取未定义的属性“fn”
- 让 js 和 css 与 Ratchet 的 push.js 一起工作
- 将大型 JSON 文件与 d3.js 一起使用会导致大量性能下降/崩溃
- 假服务器与要求.js一起工作
- 如何将 JSP 与 JS 一起使用
- 如何将 CSS 与 JS 一起使用
- 将Cordova插件与Meteor.js一起使用
- 将 React 的不可变助手与 Immutable.js一起使用
- 如何将事件与 Node JS 一起使用
- 如何在UI中与React JS一起进行无限滚动
- 如何将包与require.js一起使用
- 将mongoDB与node.js一起使用的最佳方式是什么
- 向Handlebars中的输入元素添加属性(与Ember.JS 1.0一起使用)
- pcDuino能和cylon.js一起工作吗
- 将pxloader与require.js一起使用
- 将submit与JS一起使用不会传递DATA