Karma public api缺少configFile选项

时间:2014-07-21 17:26:13

标签: javascript node.js gruntjs karma-runner gulp

gulp-karma建议像这样的外部配置文件:

module.exports = {
    basePath: '',
    singleRun: true
};

我想要一个像这样的外部配置文件(grunt-karma样式):

module.exports = function(config) {
    config.set({
         basePath: '',
         singleRun: true
    });
};

如何将proper config file与karma API一起使用。

详细信息:

我正在使用gulp-karma,如上所述 there,  我必须自己实施。

Karma API非常简单:

var server = require('karma').server;
server.start(config, done);

config变量含糊不清。它是configuration的简单对象:

var config = {
    basePath: '',
    singleRun: true
    // ...
}

让我们来看看grunt-karma:

示例grunt-karma配置:

karma: {
  unit: {
      configFile: 'karma.conf.js'
  }
}

grunt-karma配置可以采用configFile选项,但没有记录anywhere

我可以看到,我可以从karma source code传递configFile选项:

var config = cfg.parseConfig(cliOptions.configFile, cliOptions);

是否存在提及configFile选项的Karma API文档,grunt-karma如何知道 use it

1 个答案:

答案 0 :(得分:8)

这个问题令人惊讶地相关,而且这些评论中的大多数都对这篇文章末尾提出的实际问题轻描淡写:" grunt-karma如何知道使用名为{{1}的属性的配置对象}。

我也一直想知道同样的事情,因为该属性未在karma配置文档中的任何位置列出。例如,如果我想通过我的gulpfile中的公共API运行我的业力测试。它看起来像这样: ...

configFile

这样可以正常工作,除非我想导出配置功能以便我可以使用配置常量(概述here):

var karmaConfig = require('spec/karma.conf.js');
// where my config file exports an object with properties like exclude:, path:
karma.start(karmaConfig)}, process.exit);

但除非你使用这样的东西,否则无法让它发挥作用:

// allows me to do this

module.exports = function(config) {
    config.set({
        logLevel: config.LOG_INFO
    });
}

我只是传入一个具有属性karma.start({configFile: 'spec/karma.conf.js'}, process.exit); 的对象,该对象指向实际的配置文件。

Karma docs 在任何地方都没有提到(截至此评论),但它是使用config函数导出时通过API完成运行测试的唯一方法方法