为什么我的实习测试失败并且“文档未定义”

时间:2013-06-24 21:48:43

标签: unit-testing dojo intern

我是Intern的新手,并努力尝试在我的环境中运行一个简单的测试。我能够运行教程测试,但我已经尝试设置一个测试,其中测试文件位于我的app目录层次结构中。正在测试的模块位于:

sandbox/web/libs/ev/grids/FilterGrid.js

测试文件位于:

sandbox/web/libs/ev/tests/FilterGrid.js

我的实习配置文件位于:

sandbox/tests/intern.js

我的加载程序和套件对象如下所示:

loader: {
    packages: [
        { name: 'dojo', location: 'web/libs/dojo' },
        { name: 'dijit', location: 'web/libs/dijit },
        { name: 'dgrid', location: 'web/libs/dgrid' },
        { name: 'put-selector', location: 'web/libs/put-selector' },
        { name: 'xstyle', location: 'web/libs/xstyle' },
        { name: 'ev', location: 'web/libs/ev' }
    ]
},
suites: ['ev/tests/FilterGrid'],

当加载程序尝试加载时,我得到:

Defaulting to "console" reporter
ReferenceError: document is not defined
    at /home/bholm/Projects/src/sandbox/web/libs/dojo/selector/_loader.js:5:15
    at execModule (/home/bholm/Projects/src/sandbox/node_modules/intern/node_module
        /dojo/dojo.js:512:54)
    at /home/bholm/Projects/src/sandbox/node_modules/intern/node_modules/dojo/dojo.js:579:7
    at guardCheckComplete (/home/bholm/Projects/src/sandbox/node_modules/intern/node_modules/dojo/dojo.js:563:4)
    at checkComplete (/home/bholm/Projects/src/sandbox/node_modules/intern/node_modules/dojo/dojo.js:571:27)
    at onLoadCallback (/home/bholm/Projects/src/sandbox/node_modules/intern/node_modules/dojo/dojo.js:653:7)
    at /home/bholm/Projects/src/sandbox/node_modules/intern/node_modules/dojo/dojo.js:746:5
    at fs.js:266:14
    at Object.oncomplete (fs.js:107:15)

使用Intern的单元测试是否需要定义DOM文档? 我还注意到实习生将dojo2_core列为依赖。所以它使用未发布的代码?

对此有任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

看起来您正在尝试使用需要浏览器环境的Node.js客户端加载一些代码。这不行。您只应在浏览器中加载ev/tests/FilterGrid测试套件。您可以通过修改Intern配置文件来执行此操作,如下所示:

define([ 'intern/node_modules/dojo/has' ], function (has) {
  var suites = [];

  if (has('host-browser')) {
    suites.push('ev/tests/FilterGrid');
  }

  return {
    // ...your existing configuration...
    suites: suites,
    // ...
  };
});