【发布时间】:2014-10-15 11:07:49
【问题描述】:
我问这个是为了后代,因为我花了一些时间才弄清楚。
我有一个应用程序,它使用 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 的运行程序,该运行程序遵循与我在应用程序中使用的结构类似的结构,它是文档正文中指向 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
如何让我的测试在 grunt 下通过?
【问题讨论】:
标签: javascript requirejs gruntjs jasmine grunt-contrib-jasmine