当我尝试运行Karma测试运行器时,JASMINE没有定义

时间:2014-02-11 19:39:31

标签: gruntjs karma-runner

我正在尝试使用此seed project作为模型来连接Karma测试运行器。

我拉入种子项目,构建它,测试运行器运行良好。

当我编辑karma.conf.js配置文件以开始包含我的项目中的文件,并将其移动到我当前的设置(种子项目之外)时,我收到此错误:

Running "karma:dev" (karma) task
ERROR [config]: Error in config file!
[ReferenceError: JASMINE is not defined]
ReferenceError: JASMINE is not defined
    at module.exports (C:\dev_AD_2014.01_PHASE1\config\karma-dev.conf.js:4:7)
    ...

我想我看到它抱怨的是......在种子项目中,它的karma配置文件格式较旧,必须在某处定义JASMINEJASMINE_ADAPTER

种子项目业力配置代码段

files = [
  JASMINE,
  JASMINE_ADAPTER,
  '../app/lib/angular/angular.js',
  'lib/angular/angular-mocks.js',
  '../app/js/*.js',
  ....
];

exclude = ['karma.conf.js'];
...

我的新设置使用了所有最新的grunt插件,并希望配置文件包含在模块定义中,如下所示:

我的业力配置代码段

module.exports = function(config) {
  config.set({
    files: [
      JASMINE,
      JASMINE_ADAPTER,
      // library and vendor files
      '../dev/vendor/**/*.js'
      '../dev/app/**/*.js'
    ],

    exclude: ['**/*.e2e.js', '../config/*.js'],
    reporters: ['progress'],
    ...

所以似乎问题很清楚:一些grunt插件的较新版本需要模块化定义,但更长的是将JASMINE等设置为已定义的变量。这是我的猜测,但我对如何解决这个问题感到有点迷茫。如果我可以帮助它,我不想使用种子项目附带的Karma版本......我认为它的版本是0.4.4。我相信最新的稳定版本是0.10.x。

我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:13)

如果你想使用最新的稳定Karma版本(0.10.9),你应该在frameworks部分定义Jasmine并确保在plugins部分中有karma-jasmine,在你的业力中配置文件。

这是一个示例配置文件:

<强> karma.conf.js

module.exports = function(config){
  config.set({
    // base path, that will be used to resolve files and exclude
    basePath: '',

    // list of files / patterns to load in the browser
    files: [
      {pattern: 'app/**/*.js', watched: true, included: true, served: true}
    ],

    // list of files to exclude
    exclude: [

    ],

    preprocessors: {

    },

    proxies: {

    },

    // test results reporter to use
    // possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
    reporters: ['progress'],

    // web server port
    port: 9876,

    // enable / disable colors in the output (reporters and logs)
    colors: true,

    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,

    autoWatch: true,

    // frameworks to use
    frameworks: ['jasmine'],

    // Start these browsers, currently available:
    // - Chrome
    // - ChromeCanary
    // - Firefox
    // - Opera
    // - Safari (only Mac)
    // - PhantomJS
    // - IE (only Windows)
    browsers: [
              'Chrome'
              ],

    plugins: [
            'karma-chrome-launcher',
            'karma-firefox-launcher',
            'karma-script-launcher',
            'karma-jasmine'
            ],

    // If browser does not capture in given timeout [ms], kill it
    captureTimeout: 60000,

    // Continuous Integration mode
    // if true, it capture browsers, run tests and exit
    singleRun: false
  });
};

来源:Karma-runner docs

答案 1 :(得分:2)

在文件数组中包含JASMINEJASMINE_ADAPTER适用于Karma版本0.8.x及更低版本。对于Karma的较新版本,即版本0.13,只需从文件数组中删除这两行,因为您已经将Jasmine作为框架加载(framework=['jamsine'])。