2016-11-11 3 views
1

スタティック設定ファイルを指定せずに代わりに設定オブジェクトを与えることができますか?それを行うのいずれかの方法はあり設定ファイルなしでJSからカルマテストを実行

const karmaConfig = {...}; 

gulp.task('test', function (done) { 
    new Server({ 
    config: karmaConfig, 
    singleRun: true 
    }, done).start(); 
}); 

理想的なシナリオは次のようになりますか?

なぜなら、別のファイルに取り組んで別のテストを実行したいからです。これは私が別の場所で一般的な設定ファイルで指定しています。

+0

カルマはこの機能を提供していません – smnbbrv

答えて

1

私が見つけた解決策は、一時的な構成ファイルを使用することです。 コードは次のようになります。

const tmp = require('tmp'); 
const fs = require('fs'); 
const gulp = require('gulp'); 

function createConfigFileContent(configurationObject) { 
    return ` 
    module.exports = function karmaConfig(config) { 
    const conf = ${JSON.stringify(configurationObject)}; 
    conf.logLevel = config.LOG_INFO; 

    return config.set(conf); 
    }; 
    `; 
} 

function createConfigObject(testFiles) { 
    const files = testFiles.map(f => ({ pattern: f, included: true })); 

    return { 
    basePath: process.cwd(), // project root 
    frameworks: ['jasmine'], 
    files, 
    exclude: [], 
    preprocessors: {}, 
    reporters: ['progress'], 
    port: 9876, 
    colors: true, 
    autoWatch: false, 
    browsers: ['Chrome'], 
    singleRun: true, 
    concurrency: Infinity, 
    }; 
} 

function generateConfig(runner, testFiles) { 
    const config = createConfigObject(runner, testFiles); 

    return createConfigFileContent(config); 
} 


gulp.task('karma', done => { 
    // Create temporary configuration file 
    const config = tmp.fileSync(); 

    // Populate it with config to run our files 
    fs.writeFileSync(config.name, generateConfig(FILESARRAY)); 

    // Run karma 
    return new KarmaServer({ 
     configFile: config.name, 
     singleRun: true, 
    }, 
    function cleanUp() { 
     // Erase temporary config and finish task 
     config.removeCallback(); 
     done(); 
    }).start(); 
}); 
関連する問題