誰かがbumblebeeとrequireJsを組み合わせる方法についてのヒントを教えてもらえますか? BumbleBee は、Rhino、JSpec、Envjs、および Ant を組み合わせて、「すぐに使える」JavaScript テスト ツールキットを提供します。ubuntu-boxの端末で簡単なスタンドアロン実行が可能になるため、私たちにとって非常に便利です。
requireJs-Modules に基づく私たちの JS コード全体は、必要なモジュールが envjs/bumblebee/rhine の仕様ファイルから要求された場合にロードされないようです(どのようなものが原因である可能性がありますか)。これは、requireJs の非同期性が原因です。
私がやったこと:
- 上記のgithub サイトの指示に従って BumbleBee-Environment をセットアップしました
- コマンド「ant examples」は正常に機能し、両方のテストケースが正常に実行されています
- 依存関係にrequire-jquery.jsを追加しました(最初にセットアップされたjquery.jsを置き換えます)(この方法は、チュートリアル「requireJSでjQueryを使用する方法」に従います-Web アプリケーション全体で正常に実行されます(そして正常に動作します))
- 私はいくつかのrequireJS-Modulesを書き、スペックファイルでそれらを必要とし、それらがロードされないことを非常に迅速に検出しました(スペックファイルがロードされ、requireメソッドが実行されますが、コンテンツは実行されません)
- 次に、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」のみがコンソールに出力され、require ベースのコードがここで実行されることはありません。
次に、define/require-parts を example-files から spec-files に入れ、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 は私たちにとって間違ったテスト ツールですか? ヒントをありがとう!