运行 没有配置文件的 JS 业力测试
Run karma test from JS without a config file
有什么办法可以 运行 karma 而不是指定静态配置文件而是给它一个配置对象吗?
理想的场景应该是这样的:
const karmaConfig = {...};
gulp.task('test', function (done) {
new Server({
config: karmaConfig,
singleRun: true
}, done).start();
});
有什么办法吗?
其背后的原因是我希望有不同的测试 运行s 来处理不同的文件,我在其他地方的通用配置文件中指定了这些文件。
我找到的解决方案是使用临时配置文件。
代码如下:
const tmp = require('tmp');
const fs = require('fs');
const gulp = require('gulp');
function createConfigFileContent(configurationObject) {
return `
module.exports = function karmaConfig(config) {
const conf = ${JSON.stringify(configurationObject)};
conf.logLevel = config.LOG_INFO;
return config.set(conf);
};
`;
}
function createConfigObject(testFiles) {
const files = testFiles.map(f => ({ pattern: f, included: true }));
return {
basePath: process.cwd(), // project root
frameworks: ['jasmine'],
files,
exclude: [],
preprocessors: {},
reporters: ['progress'],
port: 9876,
colors: true,
autoWatch: false,
browsers: ['Chrome'],
singleRun: true,
concurrency: Infinity,
};
}
function generateConfig(runner, testFiles) {
const config = createConfigObject(runner, testFiles);
return createConfigFileContent(config);
}
gulp.task('karma', done => {
// Create temporary configuration file
const config = tmp.fileSync();
// Populate it with config to run our files
fs.writeFileSync(config.name, generateConfig(FILESARRAY));
// Run karma
return new KarmaServer({
configFile: config.name,
singleRun: true,
},
function cleanUp() {
// Erase temporary config and finish task
config.removeCallback();
done();
}).start();
});
有什么办法可以 运行 karma 而不是指定静态配置文件而是给它一个配置对象吗?
理想的场景应该是这样的:
const karmaConfig = {...};
gulp.task('test', function (done) {
new Server({
config: karmaConfig,
singleRun: true
}, done).start();
});
有什么办法吗?
其背后的原因是我希望有不同的测试 运行s 来处理不同的文件,我在其他地方的通用配置文件中指定了这些文件。
我找到的解决方案是使用临时配置文件。 代码如下:
const tmp = require('tmp');
const fs = require('fs');
const gulp = require('gulp');
function createConfigFileContent(configurationObject) {
return `
module.exports = function karmaConfig(config) {
const conf = ${JSON.stringify(configurationObject)};
conf.logLevel = config.LOG_INFO;
return config.set(conf);
};
`;
}
function createConfigObject(testFiles) {
const files = testFiles.map(f => ({ pattern: f, included: true }));
return {
basePath: process.cwd(), // project root
frameworks: ['jasmine'],
files,
exclude: [],
preprocessors: {},
reporters: ['progress'],
port: 9876,
colors: true,
autoWatch: false,
browsers: ['Chrome'],
singleRun: true,
concurrency: Infinity,
};
}
function generateConfig(runner, testFiles) {
const config = createConfigObject(runner, testFiles);
return createConfigFileContent(config);
}
gulp.task('karma', done => {
// Create temporary configuration file
const config = tmp.fileSync();
// Populate it with config to run our files
fs.writeFileSync(config.name, generateConfig(FILESARRAY));
// Run karma
return new KarmaServer({
configFile: config.name,
singleRun: true,
},
function cleanUp() {
// Erase temporary config and finish task
config.removeCallback();
done();
}).start();
});