Как настроить модульное тестирование для модуля с несколькими требованиями

Я работаю над базой кода, где код делится на несколько обязательных модулей. т.е. каждый раздел имеет свой собственный файл main.js с требуемой конфигурацией.

Я хочу настроить покрытие кода для всей базы кода, используя Karma.

Так как у каждого раздела есть свой config requirejs, я создал test-main.js для каждого модуля.

И пусть karma.config загрузит все файлы test-main.js.

Я сталкиваюсь с проблемами. Есть столкновение между baseUrl.

При тестировании только одного модуля он работает нормально.

Любая идея?

1 ответ

Вы можете связать несколько бегунов кармы, используя карму программно. Карма предлагает 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...];
}

Запустите Карму программно

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');
  }
});
Другие вопросы по тегам