1

私はrequirejsjs-test-driverを一緒に使用しようとしてきましたが、それを機能させることができません。

私はルートでこのような最小限の構成を持っています:

server: http://localhost:9876

load:
 - src/main/resources/web/resources/vendor/requirejs/require.js

test:
 - src/test/js/*.js

「src/main / js / greeter.js」ファイルはばかげたモジュールを定義します:

define(function(require) {

  myapp = {};

  myapp.Greeter = function() {
  };

  myapp.Greeter.prototype.greet = function(name) {
    return "Hello " + name + "!";
  };

  return myapp;
});

そして、私はrequireに"src / test / js /greeterTest.js"のgreeterモジュールをロードさせようとしています:

GreeterTest = TestCase("GreeterTest");

require.configure({ ???? });
require([ "src/main/js/greeter" ], function(myapp) {

  GreeterTest.prototype.testGreet = function() {
    var greeter = new myapp.Greeter();
     assertEquals("Hello World!", greeter.greet("World"));
    };

});

これを実行すると、Greeterの作成時にmyappが定義されていないため、エラーが発生します。

この場合、requireを構成する方法はありますか?私は試した :

  • baseUrlプロパティをfile:///....のように設定して、ファイルの場所を指定します
  • ゲートウェイ構成を使用してrequirejsが実行する可能性のあるリクエストをプロキシします(ただし、jsファイルを提供するためにサーバーを実行していないため、file:///を使用する必要がありました)

他に試してみるべきことはありますか?

ありがとう

4

1 に答える 1

1

それは可能ですが、文書化が不十分です:

  • js-test-driver には、テスト サーバーが静的ファイルに応答できるようにする「サーブ」設定があります。
  • 提供されると、ファイルは localhost:42442/test/xxxx で利用可能になります (「test」プレフィックスは、ドキュメント ページの下部にあるコメントを除いて言及されていません)。

したがって、これは機能します:


server: http://localhost:9876

load:
  - src/main/resources/web/resources/vendor/requirejs/require.js

test:
  - src/test/js/*.js

serve:
  - src/main/js/*.js

また、requirejs は次のように構成する必要があります。


require({
    baseUrl : "/test/src/main/js"
}, [ "greeter" ], function(myapp) {

    GreeterTest = TestCase("GreeterTest");

    GreeterTest.prototype.testGreet = function() {
        var greeter = new myapp.Greeter();
        assertEquals("Hello World!", greeter.greet("World"));
    };

});

知らせ :

  • / テスト前
  • 「src/main/js」部分を再利用する必要があるという事実; これは、私の jsTestDriver 構成が「src」フォルダーと同じレベルにあるという事実に関連していると思います。それ以外の場所に配置されている場合は、微調整が必​​要になる可能性があります。
于 2012-09-19T12:41:47.167 に答える