Karma无效的配置文件

时间:2015-08-11 08:30:25

标签: javascript unit-testing karma-runner

为了使karma配置文件更容易配置路径,我使用变量来存储路径的某些部分。

var publicfolder = "public"
var mypath = "packages/vendor/package/";

files: [
  publicfolder+'/assets/libs/jquery/dist/jquery.js',
  publicfolder+'/assets/libs/angular/angular.js',
  publicfolder+'/assets/libs/**/*.js',
  publicfolder+'/app/**/*.js',
  mypath +'/public/app/**/*.test.js',
  mypath +'/public/app/**/*.html'
],

preprocessors: {
    mypath +'/public/app/**/*.html':['ng-html2js']
},

然而,当我运行测试时,会出现错误说

E:\www\project\karma.conf.js:83
    mypath +'/public/app/**/*.html':['ng-html2js']
           ^
ERROR [config]: Invalid config file!
  SyntaxError: Unexpected token +
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)

我的问题是为什么?为什么我不能把变量放在那里?为什么将它放在files数组中而不是preprocessors中呢?

1 个答案:

答案 0 :(得分:1)

preprocessors是一个对象,您不能使用initializer notation将表达式放在对象键中。如果使用square bracket notation设置密钥,则可以使用表达式。

所以在这种情况下你可以这样做:

var mypath = "packages/vendor/package/";
var preprocessors = {};
preprocessors[mypath +'/public/app/**/*.html'] = ['ng-html2js'];

files数组中使用表达式很好,因为你只是创建常规字符串,而不是对象键。