我还没有看到任何相关内容,但我想知道是否有可能在单个Karma运行中包含多个karma-conf.js文件?基本上,我正在考虑为CI配置带覆盖和tslint的配置,以及仅使用本地开发测试的配置。
答案 0 :(得分:1)
这是一个引用主文件karma.conf.child.js
的子文件karma.conf.js
的简单示例。子文件导入主要设置,进行更改,然后再次导出。您也可以将此import-change-export模式与其他工具一起使用。
在此示例中,我更改了设置以在TeamCity CI服务器上启用报告:
// This is karma.conf.child.js
// import settings from default config file
var properties = null;
var originalConfigFn = require('./karma.conf.js');
originalConfigFn({ set: function(arg) { properties = arg; } });
// alter settings here:
properties.colors = false;
properties.singleRun = true;
properties.autoWatch = false;
properties.browsers = ['ChromeHeadless'];
properties.reporters.push('teamcity');
properties.coverageIstanbulReporter.reports.push('teamcity');
// export settings
module.exports = function (config) {
config.set(properties);
};
要运行,请根据说明文件调用子配置文件:
karma start ./src/karma.conf.child.js
我正在使用Angular CLI,所以我像这样调用ng test
:
ng test --karma-config=./src/karma.conf.child.js
答案 1 :(得分:0)
据我所知,Karma只接受单个配置文件作为输入,可以指定为命令行参数或作为karma服务器的构造函数选项的一部分。
也许gulp为您提供了另一种方法。我使用gulp文件包含多个任务。每个任务都能够覆盖karma-conf.js中给出的默认配置,例如
console.log('Importing gulp dependencies ...');
var gulp = require('gulp');
var karma = require('karma');
var KarmaServerConstructor = karma.Server;
var karmaStopper = karma.stopper;
var watch = require('gulp-watch');
var commandLineArguments = require('yargs').argv;
var svn = require('gulp-svn');
var exec = require('child_process').exec;
var fs = require('fs');
var os = require('os');
var open = require('gulp-open');
var collect = require('gulp-collect');
console.log('Imports finished.');
gulp.task('watch', function() {
return gulp //
.watch('MyTestProject/App/**/*.spec.js', handleFileChanged)
.on('error', handleGulpError);
function handleFileChanged(vinyl) {
var pathForChangedFile = './' + vinyl.replace(/\\/g, '/');
var karmaOptions = {
configFile: __dirname + '/karma.conf.js',
action: 'start',
browsers: ['PhantomJS'],
singleRun: true,
files: firstKarmaFiles //
.concat([
{
pattern: pathForChangedFile,
included: false
}
]) //
.concat(lastKarmaFiles)
};
var karmaServer = new KarmaServerConstructor(karmaOptions);
karmaServer.start();
}
});