我正在开发一个代码库,代码分为多个需求模块。 即每个部分都有自己的main.js和require配置。
我想使用Karma为整个代码库设置代码覆盖率。
由于每个部分都有自己的requirejs配置,因此我为每个模块创建了一个test-main.js。
让karma.config加载所有test-main.js文件。
我遇到了问题。 baseUrl之间存在冲突。
当只测试一个模块时,它可以正常工作。
有什么想法吗?
答案 0 :(得分:0)
你可以通过编程方式使用业力链接多个业力跑步者。 Karma offers an API使其以编程方式工作(这不是那么明确的恕我直言 - 一些例子可以改进它)。
首先,你需要一个配置数组,然后你需要以编程方式调用karma并链接调用。
function getConfiguration(filename){
return {
// you can enrich the template file here if you want
// e.g. add some preprocessor based on the configuration, etc..
//
// if not set in the config template
// make Karma server launch the runner as well
singleRun: true,
// point to the template
configFile : __dirname + filename
};
}
function createConfigurations(){
return [getConfiguration('conf1.js'), getConfiguration('conf2.js'), etc...];
}
function startKarma(conf, next){
karma.server.start(conf, function(exitCode){
// exit code === 0 is OK
if (!exitCode) {
console.log('\tTests ran successfully.\n');
// rerun with a different configuration
next();
} else {
// just exit with the error code
next(exitCode);
}
});
// Use the async library to make things cleaner
var async = require('async');
var karma = require('karma');
var confs = createConfigurations();
async.eachSeries(confs, startKarma, function(err){
if(err){
console.log('Something went wrong in a runner');
else {
console.log('Yay! All the runners have finished ok');
}
});