1

我正在尝试为我无法控制的旧 JS 文件/模块构建一些单元测试。

JS 模块是使用以下模式构建的...

var myModule = {
    myMethod:function() {
    }
};

然后我正在尝试构建一个 DOH 测试工具来测试它。我尝试了以下...

require([
    "doh/runner",
    "../../myModules/myModule.js"
    ], function(doh) {
        console.log(doh);
        console.log(myModule);
    });

该文件似乎很好,但我无法引用其中的任何内容。“console.log(myModule);” 只是返回未定义。

任何人都知道如何在 DOH 测试工具中正确包含外部非 dojo 模块 JS 文件?

谢谢

4

2 回答 2

1

除了你不应该使用 DOH 因为它已被弃用(使用Intern)之外,你没有理由不应该myModule在那里看到它。您使用的是脚本地址而不是模块 ID,这是不正确的,并且您使用的是带有require调用的相对路径,这也是不正确的,但是如果这些事情中的任何一个阻止加载器查找和加载您尝试加载的脚本应该会引发您可以在控制台中看到的错误。唯一的另一种可能性是您以某种方式设法在此myModule脚本中构建了一个内置层,在这种情况下,整个脚本最终被包裹在一个闭包中,因此 usingvar foo将不再定义全局变量foo

于 2013-09-24T04:23:50.007 回答
0

您需要myModule在函数回调中声明您的require语句:

require([
    "doh/runner",
    "../../myModules/myModule"
], function(doh, myModule) { // <-- include myModule
    console.log(doh);
    console.log(myModule);
});

只要确保myModule.js返回您的模块即可。

于 2013-09-23T18:16:44.160 回答