2014-12-23 3 views
0

Я использую стажер для тестирования javascript в проекте. Javascript, который мы пытаемся протестировать, не требует DOM, и он может быть запущен в процессе узла без проблем. Тем не менее, модули, которые я загружаю для теста, также загружают jquery (как пример), который попадает в dom при загрузке.Избегайте загрузки модулей модулей DOM во время тестирования

//file.js 
require([..., 'jquery'], function(..., $) { 
    // non-jquery code to test 
}) 

//intern test 
require(['intern!object', 'file'], function(registerSuite, file) { 
    registerSuite({ 
     ... 

Загрузка JQuery в модуле вызывает стажер немедленно разорвать при запуске в процессе узла, даже если я хочу проверить что-то совсем другое. Есть ли правильный способ обойти это? Я попытался просто указать модуль jquery на пустой файл, но это не работает для всех случаев.

спасибо.

ответ

0

Если какой-либо код имеет жесткую зависимость от полной, предварительно созданной копии jQuery, то он должен запускаться в среде DOM, поскольку jQuery является библиотекой DOM. Если сам код не требует DOM, он не должен иметь jQuery в качестве зависимости, после чего он будет нормально загружаться в Node.js.

Если вам нужна библиотека не-DOM-утилиты, попробуйте Dojo или Lo-Dash или что-то еще, что не является библиотекой DOM, например jQuery.

Если у вас есть модуль, который может использовать DOM, Dojo поставляется с dojo/has модулем, который может быть использован в качестве загрузчика плагина AMD условно загрузить DOM зависимостей только тогда, когда модуль загружается в браузере.

Наконец, обратите внимание, что любой модуль AMD (например, file.js в вашем примере) должен содержать вызов define, а не вызов require.

+0

Хорошо, спасибо. И да, у меня есть правильный вызов определения, я просто записывал это из памяти. Виноват. – Siriustuck13

Смежные вопросы