Почему вешает grunt-contrib-jasmine?
Я спрашиваю об этом для потомков, потому что мне потребовалось некоторое время, чтобы понять это.
У меня есть приложение, которое использует require.js и тесты на основе жасмина, автоматизированные с помощью grunt.
Я сгруппировал свои модули в логические компоненты, каждый из которых находится в каталоге app
, мой requirejs.config()
call устанавливает префиксы пути для этих компонентов, например так:
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
Как мне сдать анализы под ворчание?
1 ответ
Оказывается, префиксы пути в моем requirejs.config()
Вызов должен содержать косую черту:
paths: {
/*... vendor libraries are listed here ...*/
ui: 'app/ui/',
data: 'app/data/',
/* etc */
}
Так, 'app/ui/'
вместо 'app/ui'
,
Я до сих пор не уверен относительно основной причины этого, потому что обе версии работают в браузере; возможно, это другая версия require.js, используемая задачей grunt, или, возможно, это что-то своеобразное для фантома.
Оставьте этот вопрос и ответьте так, чтобы это могло сэкономить кому-то время.