1

我已经与 Intern 斗争了很长时间,以测试服务器代码(遵循这些建议)和客户端代码(例如,在我的这个项目中定义的传统应用程序)。

实习生配置文件包含:

loader: {
    packages: [
        { name: 'dojo', location: './libs/dojo' },
        { name: 'server', location: './server' }
    ]
},

但是,dojo 包的位置总是被忽略。报告的错误是:

$ node node_modules/intern/client.js config=intern suites=server/model/tests/News
Defaulting to "console" reporter
Error: Failed to load module dojo/_base/declare from <root>/dojo/_base/declare.js (parent: server/model/Ne
ws)
    at <root>\node_modules\intern\node_modules\dojo\dojo.js:742:12
    at fs.js:207:20
    at Object.oncomplete (fs.js:107:15)

我对 <root> 部分进行了编辑以简化输出。

我目前的解决方法是在 <root> 级别复制 dojo 文件夹,但这很不方便......

我当前的文件夹结构是:

<root>
    |- client
    |- libs
    |    |- dojo
    |    |- ...
    |- node_modules
    |    |- grunt
    |    |- intern
    |    |- ...
    |- server
         |- dao
         |    |- tests
         |- model
         |    |- tests
         |- ...

我哪里错了?

更新:在我阅读的所有地方(如这里),配置都被指定为 MID,而不是带有扩展名的文件名。当我使用“ config=intern.js ”运行我的命令时,配置被正确处理(我已经破解了“client.js”来记录配置内容)。注意:我在 Windows 机器上运行 Node.js/Intern...

附加信息:这是处理我的测试所需的最少内容。

define({
    loader: {
        packages: [
            { name: 'dojo', location: './libs/dojo' },
            { name: 'server', location: './server' }
        ]
    },
    suites: [ 'server/allTests' ]
});
4

1 回答 1

1

我面临的问题与加载程序有关:

  • 如果配置文件intern.js位于根级别,则命令必须包含扩展名:config=intern.js;
  • 如果配置文件位于子文件夹中,tests则必须在命令中省略扩展名:config=tests/intern.

这发生在intern/client.js第 38 行,调用 Node.jsrequire()函数。

于 2014-02-21T12:48:42.483 回答