实习生excludeInstrumentation正则表达式无法排除模块

时间:2013-06-21 23:14:45

标签: unit-testing dojo intern

我是Intern的新手,并试图弄清楚如何为我们的项目配置它。我们的文件层次结构与github上实习生的实习教程或自述文件中的示例不完全相同。我认为我已经正确指定了包位置,因为它没有抱怨没有找到测试模块。它甚至似乎运行我已经设置的测试,但它然后尝试在我的包模块中定义的其余模块上运行测试。它首先尝试加载... / dojo / _base / declare.js。所以我尝试指定excludeInstrumentation属性值。

我将其指定为:

excludeInstrumentation: /^(?:dojo|dijit|dgrid|tests)\//

但不排除它。我的目标模块在define中有这个:

define([
  'dojo/_base/declare',
  'dojo/_base/lang',
  'dojo/dom-construct',
  'dojo/on',
  'dojo/query',
...
  'dijit/layout/BorderContainer',
  'dijit/layout/ContentPane',
  'dijit/form/TextBox',
...
  'dgrid/OnDemandGrid',
  'dgrid/Keyboard',
...

但我得到错误:

node node_modules/intern/client.js config=tests/intern
Defaulting to "console" reporter
Error: Failed to load module dojo/_base/declare from 
  /home/bholm/Projects/src/sandbox/dojo/_base/declare.js 
  (parent: ev/grids/FilterGrid)
at /home/bholm/Projects/src/sandbox/node_modules/intern/node_modules/dojo/dojo.js:742:12
at fs.js:207:20
at Object.oncomplete (fs.js:107:15)

我应该注意,dojo,dijit和dgrid包实际上位于: / home / bholm / Projects / src / sandbox / libs / dojo / ...(注意路径中添加了libs。)

我忘了在配置文件intern.js中添加我的loader属性:

loader: {
    //baseUrl: '..',
    packages: [
        { name: 'intern', location: 'node_modules/intern' },
        { name: 'ev', location: 'web/libs/ev' }
    ]
},

关于为什么正则表达式不被排除的任何想法?

1 个答案:

答案 0 :(得分:2)

  1. 不要将实习包放入装载程序配置中。仅将特定于应用程序的配置放入加载程序配置中。
  2. excludeInstrumentation仅用于防止在通过Intern代理传递脚本时使用代码覆盖率数据修改脚本。它不会改变加载器的工作方式,也不会阻止您的AMD依赖项被正常请求和加载。
  3. 如果您的应用程序使用不在baseUrl范围内的第三方软件包(dojo,dijit等),则需要确保它们在packages中配置,就像它们需要一样在运行实际应用程序时进行配置。