unit-testing - 如何使用 isparta、webpack、jasmine 和 karma 获得准确的代码覆盖率数字?

标签 unit-testing webpack ecmascript-6 jasmine isparta

尝试使用 webpack、isparta、jasmine 和 karma 的组合时,我很难获得正确的代码覆盖率数字。测试运行结束时的数字不能正确反射(reflect) ES6 代码。但是,UI 显示正确的 ES6 文件,突出显示正确,只是数字不正确。

这是我正在谈论的内容的屏幕截图。

错误的代码覆盖率:

Wrong Code Coverage Numbers

代码和突出显示是正确的,但数字不正确。例如,Statement 编号完全关闭。我假设这些数字来自转换后的代码。

这是我的 karma.config.js:

'use strict';

var conf = require('./gulp/conf');
var _ = require('lodash');
var wiredep = require('wiredep');
var webpackConfig = require('./webpack.config.js');

function listFiles() {
    var wiredepOptions = _.extend({}, conf.wiredep, {
        dependencies: true,
        devDependencies: true
    });

    var dependencies = wiredep(wiredepOptions).js;

    dependencies.push('test-context.js');

    return dependencies;
}

module.exports = function(config) {

    var configuration = {
        files: listFiles(),
        logLevel: 'WARN',
        frameworks: ['jasmine'],
        browsers : ['PhantomJS'],
        plugins : [
            'karma-phantomjs-launcher',
            'karma-coverage',
            'karma-jasmine',
            'karma-webpack'
        ],
        preprocessors: {
            'test-context.js': ['webpack']
        },
        webpack: webpackConfig,
        webpackMiddleware: {
            noInfo: true
        },
        reporters: ['progress', 'coverage'],
        coverageReporter: {
            dir : 'coverage/',
            reporters: [
                { type: 'html' }
            ]
        }
    };

    config.set(configuration);
};

这是我的 webpack 配置:
var webpack = require('webpack');

module.exports = {
    node: {
      fs: 'emtpy'
    },
    module: {
        preLoaders: [
            {
                test: /\.js$/,
                loader: 'isparta',
                include: /(src)/
            }
        ],
        loaders: [
            {
                test: /\.js$/,
                include: /(src)/,
                loader: 'babel?stage=0'
            }
        ]
    },
    resolve: {
        extensions: [
            '',
            '.js'
        ]
    },
    devtool: 'inline-source-map'
};

这是 test.context.js:
var context = require.context('./test', true, /\.js$/);
context.keys().forEach(context);

var srcContext = require.context('./src', true, /\.js$/);
srcContext.keys().forEach(srcContext);

最佳答案

如果您有 GitHub 帐户,您可以看到此 list of real projects which use webpack with isparta, jasmine, and karma用于比较的一组工作示例。希望这会有所帮助,谢谢。

关于unit-testing - 如何使用 isparta、webpack、jasmine 和 karma 获得准确的代码覆盖率数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33132890/

相关文章:

unit-testing - golang中可以跳过init方法吗?

sql - 对内存中可与持续交付管道集成的数据库过程进行VS单元测试

javascript - 如何将 Django 模板变量传递给 WebPack 模块

npm - 开发时如何使用Webpack避免React加载两次

javascript - redux 中异步操作后的 setState

javascript - module.exports 无法设置未定义的属性

javascript - JavaScript中的箭头函数

unit-testing - 如何使用 Moq.Dapper 模拟 QueryMultiple

cordova - cordova自定义插件的测试覆盖率工具

javascript - 如何将 CSS 和 js 文件 bundle 到一个 HTML 文件中?