Я спрашиваю это для потомков, потому что мне потребовалось некоторое время, чтобы понять это.
У меня есть приложение, которое использует 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 */
});
Мое приложение работает, и мои тесты проходят в моем веб-раннере, который следует структуре, аналогичной той, что я использовал в приложении, которое представляет собой один элемент <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
Как мне заставить мои тесты проходить под ворчанием?