Как настроить модульное тестирование для модуля с несколькими требованиями
Я работаю над базой кода, где код делится на несколько обязательных модулей. т.е. каждый раздел имеет свой собственный файл 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');
}
});