karma配置参数笔记(2)

2017-02-22 leung 更多博文 » 博客 » GitHub »

karma 测试框架

原文链接 https://yanqing6628780.github.io/2017/02/21/karma-config-note-2/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


module.exports = function(config) {
    var files = [];
    files.push('newifi/@(jquery*|newifi).js');
    files.push('index.html');
    files.push('../../test/*.coffee');
    files.push('../../test/*.js');
    var otherFiles = [
        'newifi/**/!(jquery*|newifi|angular*|bootstrap|echarts*).js',
        'newifi/**/*.css',
        'newifi/**/*.json'
    ];
    otherFiles.forEach((file) => {
        files.push({
            pattern: file,
            served: true,
            included: false
        });
    });
    var preprocessors = {
        '**/*.html': ['html2js'],
        '../../**/*.coffee': ['coffee']
    };
    preprocessors[otherFiles[0]] = ['coverage'];
    config.set({
        // base path that will be used to resolve all patterns (eg. files, exclude)
        basePath: 'web/htdocs/',


        // frameworks to use
        // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
        frameworks: ['jasmine-jquery', 'jasmine', 'jasmine-matchers'],


        // list of files / patterns to load in the browser
        files: files,

        // list of files to exclude
        exclude: [],


        // preprocess matching files before serving them to the browser
        // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
        preprocessors: preprocessors,
        proxies: {
            '/newifi': '/base/newifi'
        },

        // test results reporter to use
        // possible values: 'dots', 'progress'
        // available reporters: https://npmjs.org/browse/keyword/karma-reporter
        reporters: ['progress', 'kjhtml', 'coverage'],

        coverageReporter: {
            type: 'html',
            dir: '../../coverage/'
        },

        // web server port
        port: 9876,


        // enable / disable colors in the output (reporters and logs)
        colors: true,


        // level of logging
        // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
        logLevel: config.LOG_INFO,


        // enable / disable watching file and executing tests whenever any file changes
        autoWatch: true,


        // start these browsers
        // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
        browsers: ['PhantomJS'],


        // Continuous Integration mode
        // if true, Karma captures browsers, runs the tests and exits
        singleRun: false,

        // Concurrency level
        // how many browser should be started simultaneous
        concurrency: Infinity
    });
};

这是改进后的配置文件。
上一篇里面用glob获取所有匹配文件,然后一个个加文件的做法其实是多余的。 经过试验,其实karma的文件匹配方式是支持glob那套的。 <!--more-->

然后,新配置内添加kjhtml插件和coverage插件。
kjhtml插件的作用是将karma服务器的debug页变成测试结果页。而且,在debug页点击其中一个测试结果,该测试都会重新执行一遍。不过,可惜的是,修改测试文件后不会自动刷新。
coverage插件是覆盖测试报告。
上面配置文件里面的这句:

preprocessors[otherFiles[0]] = ['coverage'];

表示那些被测试的文件需要代码覆盖测试报告。