有人可以给我一些关于如何将bumblebee与requireJs结合起来的提示吗?BumbleBee 结合了 Rhino、JSpec、Envjs和 Ant 来提供一个“开箱即用”的 JavaScript 测试工具包。它对我们非常有用,因为它可以在 ubuntu-boxes 的终端中进行简单的独立运行。
我们基于 requireJs-Modules 的整个 JS 代码,并且看起来,如果从 envjs/bumblebee/rhine 的规范文件中需要它们,则不会加载所需的模块(什么样的东西可能对此负责),可能是由于requireJs中的异步事实。
我做了什么:
- 我按照上面提到的github 站点上的说明设置了 BumbleBee 环境
- 命令“ant examples”工作正常,两个测试用例都运行成功
- 我将 require-jquery.js 添加到依赖项(替换最初设置的 jquery.js)(这种方式遵循教程“如何将 jQuery 与 requireJS 一起使用” - 它在我们的整个 Web 应用程序中成功运行(并且工作正常)
- 我写了一些requireJS-Modules,在spec-files中需要它们,并且很快检测到它们不会被加载(spec-files将被加载,并且require-method将被执行,但不是ins内容)
- 然后我使用这些设置提示将requireJS与Node结合起来(这里也提到了rhino)
这些文件可能很有趣:
lib/bumblebee.js(我认为它是整个测试套件的入口点):
load('dependencies/js/env.rhino.1.2.js');
window.location="examples/fixture/fixture.html";
load('dependencies/js/jspec/jspec.js');
load('dependencies/js/require-jquery.js');
var runSpec = function(spec) {
JSpec.exec(spec);
};
define(function(require) {
console.log("A1");
var dep = require('dependency');
//The value returned from the function is
//used as the module export visible to Node.
return function () {};
});
require(['dependency'], function(d){
console.log("A2");
} );
console.log("A3");
var specs = arguments;
jQuery.each(specs, function(index, spec) {
runSpec(spec);
});
JSpec
.run({ reporter: JSpec.reporters.Terminal, fixturePath: 'spec/fixtures' })
.report();
只有“A3”会打印到控制台,这里永远不会执行基于需求的代码。
然后我将define/require-parts放入示例文件中的规范文件中,并且还检测到,我不能将模块与require一起使用,因为它们不会被加载并且不会被加载。
考虑来自 BambleBee-Examples 的原始规范文件:
describe('Greeter', function() {
load('examples/src/greeter.js');
it('greets people', function() {
expect(example.greeter().greet()).to(eql, 'Hello!');
});
});
当我现在使用 requireJS 特定的模块时,它们也不会被加载:
describe('Greeter', function() {
load('examples/src/greeter.js');
require(['dependency'], function(d){
// do something with D...
console.log("This will **NEVER** be printed");
} );
console.log("This **WILL** be printed");
it('greets people', function() {
expect(example.greeter().greet()).to(eql, 'Hello!');
});
});
问题:
有没有办法将 Envjs 与 requireJS 结合起来,或者 EnvJS 对我们来说是错误的测试工具吗?非常感谢任何提示!