4

我正在使用查找所有单元测试文件的业力任务设置 grunt。我需要访问所有*.js文件和*.spec.js文件,但我想排除所有*.e2e.js文件。根据节点 glob文档,我希望以下工作(在 karma.conf.js 中):

files: [
  'vendor/angular/angular.js',
  'vendor/angular-mocks/angular-mocks.js',
  'vendor/angular-resource/angular-resource.js',
  'app/**/*.js',
  '!app/**/*.e2e.js'
],

但是,当我尝试运行我的grunt test任务时,它仍然会尝试加载这些e2e.js测试,这些测试会中断,因为每个测试都引用量角器,而 karma 会对此感到困惑。根据我的控制台,我看到的 URL 是这样的:

userdirectory/repo/!app/mytest.e2e.js

似乎完整的文件路径(或至少其中的一部分)已预先附加到我在 karma.conf.js 中提供的文件 glob 模式中。在加载 karma 任务之后,grunt 是否会这样做?

4

1 回答 1

7

我的问题是 karma 不使用与 grunt 相同的 globber 语法。根据业力的文档,您使用“文件”来显示您想要包含的内容,并exclude显示您想要排除的内容:

exclude
Type: Array
Default: []
Description: List of files/patterns to exclude from loaded files.

这是我的修复:

files : [
  // libraries / vendor files needed to test souce code
  'vendor/angular/angular.js',
  'vendor/angular/angular-route.js',
  'vendor/angular/angular-mocks.js',
  'vendor/require/*.js',
  // all souce .js files, as well as all .spec.js test files
  'app/modules/**/*.js'
],
exclude : [
  // exclude all *.e2e.js end to end test files from being included
  // - Karma will break when trying to load protractor
  'app/modules/**/*.e2e.js'
]
于 2013-11-01T17:20:40.097 回答