0

コードが複数のrequireモジュールに分割されているコードベースに取り組んでいます。つまり、各セクションには、必要な構成を備えた独自の main.js があります。

Karma を使用して、コード ベース全体のコード カバレッジを設定したいと考えています。

各セクションには独自の requirejs 構成があるため、モジュールごとに test-main.js を作成しました。

そして、karma.config にすべての test-main.js ファイルをロードさせます。

問題が発生しています。baseUrl 間に衝突があります。

モジュールを 1 つだけテストすると、問題なく動作します。

何か案が ?

4

1 に答える 1

0

プログラムでカルマを使用して、複数のカルマ ランナーを連鎖させることができます。Karmaは、プログラムで動作させるための APIを提供します (これはそれほど明確ではありません - いくつかの例ではそれを改善できます)。

まず、構成の配列が必要です。次に、プログラムでカルマを呼び出し、呼び出しをチェーンする必要があります。

構成の配列を作成する

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 に答える