避免在测试时加载DOM relient模块

时间:2014-12-23 17:07:17

标签: javascript amd intern

我正在使用实习生在项目中测试javascript。我们尝试测试的javascript不需要DOM,并且应该能够在节点进程中运行而不会出现问题。但是,我为测试加载的模块也会加载jquery(作为示例),它会在加载时达到dom。

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

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

在模块中加载jquery会导致实习生在节点进程中运行时立即中断,即使我想测试完全不同的东西。有没有正确的解决方法?我尝试将jquery模块指向一个空文件,但这并不适用于所有情况。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果任何代码对jQuery的完整预构建副本具有硬依赖性,那么它必须在DOM环境中运行,因为jQuery是一个DOM库。如果代码本身不需要DOM,那么它不应该将jQuery作为依赖项,此时它将在Node.js中正常加载。

如果您需要非DOM实用程序库,请尝试DojoLo-Dash或其他不像jQuery这样的DOM库。

如果你有一个可能使用DOM的模块,Dojo附带了dojo/has模块,该模块可用作AMD加载器插件,仅在模块为时才有条件地加载DOM依赖项在浏览器中加载。

最后请注意,任何AMD模块(例如示例中的file.js)都应包含define来电,而不是require来电。