Почему вешает 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, или, возможно, это что-то своеобразное для фантома.

Оставьте этот вопрос и ответьте так, чтобы это могло сэкономить кому-то время.

Другие вопросы по тегам