关于javascript:业力公共api缺少configFile选项

Karma public api lacks configFile option

gulp-karma建议使用如下外部配置文件:

1
2
3
4
module.exports = {
    basePath: '',
    singleRun: true
};

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

1
2
3
4
5
6
module.exports = function(config) {
    config.set({
         basePath: '',
         singleRun: true
    });
};

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

细节:

我正在使用gulp-karma,并且如上所述
那里,
我必须自己实现。

业力API非常简单:

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

config变量含糊不清。这是一个具有以下配置的普通对象:

1
2
3
4
5
var config = {
    basePath: '',
    singleRun: true
    // ...
}

让我们看看grunt-karma:

样本grunt-karma配置:

1
2
3
4
5
karma: {
  unit: {
      configFile: 'karma.conf.js'
  }
}

grunt-karma配置可以采用configFile选项,该选项在任何地方都没有记录。

我可以看到,我可以从业力源代码中传递configFile选项:

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

是否有Karma API的文档提到configFile选项,grunt-karma如何知道
使用它。


这个问题令人惊讶地相关,并且大多数评论使这篇文章结尾处提出的实际问题变得轻而易举:" grunt-karma如何知道如何使用具有configFile属性的配置对象。

我也一直想知道,同一属性没有在业力配置文档中的任何地方列出。例如,如果我想通过gulpfile中的公共API运行我的业力测试。它看起来像这样:
...

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

这将很好地工作,除非我想导出配置函数,以便可以使用配置常量(在此处概述):

1
2
3
4
5
6
7
// allows me to do this

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

但是除非您使用类似以下的方法,否则无法使其正常工作:

1
karma.start({configFile: 'spec/karma.conf.js'}, process.exit);

我在其中简单地传递一个对象,该对象的属性为configFile,它指向实际的配置文件。

Karma文档在任何地方都没有提及(截至本评论),但这是在使用配置函数导出方法时通过API运行我的测试的唯一方法。