これを理解するのに時間がかかったので、後世のためにこれを求めています。
私は、require.js を使用するアプリケーションと、ジャスミンに基づいたテストを grunt で自動化しています。
モジュールを論理コンポーネントにグループ化し、それぞれが の下のディレクトリにありapp
ます。私のrequirejs.config()
呼び出しは、これらのコンポーネントのパスプレフィックスを次のように設定します。
paths: {
/*... vendor libraries are listed here ...*/
ui: 'app/ui',
data: 'app/data',
/* etc */
}
次に、これらのモジュールへの依存関係を次のように指定できます。
define([ 'ui/some/module', 'data/another/module' ], function(ui_module, data_module) {
/* code for module being defined goes here */
});
私のアプリは動作し、私のテストは Web ベースのランナーに合格します。これは、アプリケーションで使用したものと同様の構造に従います。これは、require.js を指すドキュメント本体の単一の要素<script>
であり、これには非常によく似た呼び出しが含まれていますが、テスト自体の追加パスと、テストを実行する への呼び出しのみが含まれています。data-main
test/index
requirejs.config()
window.onload()
しかし、を使用するgrunt-contrib-jasmine
と、テストがハングし、テストが実行されません。私が受け取るメッセージは次のとおりです。
>> Error: timeout: Load timeout for modules: [list of modules, all my own application modules]
>> http://requirejs.org/docs/errors.html#timeout at
>> http:/127.0.0.1:8000/_SpecRunner.html:21
>> http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/require.js:12 v
>> http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/require.js:14 C
>> http:/127.0.0.1:8000/.grunt/grunt-contrib-jasmine/require.js:14
どうすれば自分のテストをうなり声で通過させることができますか?