我问这个是为了后代,因为我花了一些时间来解决这个问题。
我有一个使用 require.js 和基于 jasmine 的测试的应用程序,通过 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 的运行程序,它遵循与我在应用程序中使用的结构类似的结构,它是<script>
文档正文中指向 require.js 的单个元素,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
如何让我的测试在 grunt 下通过?