0

我正在开发一个代码库,其中代码分为多个需要模块。即每个部分都有自己的 main.js 和 require 配置。

我想使用 Karma 为整个代码库设置代码覆盖率。

由于每个部分都有自己的 requirejs 配置,因此我为每个模块创建了一个 test-main.js。

并让 karma.config 加载所有 test-main.js 文件。

我遇到了问题。baseUrl 之间存在冲突。

仅测试一个模块时,它可以正常工作。

任何想法 ?

4

1 回答 1

0

您可以以编程方式使用 karma 链接多个 karma runner。Karma提供了一个 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...];
}

以编程方式启动 Karma

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');
  }
});
于 2015-03-18T20:01:38.957 回答