Grunt-karma调试未最小化的源代码



我记得在过去的某个时候,我可以用Chrome开发工具调试我的测试,并进入我的非迷你源。

我不确定这是否是一个被改变的配置选项,但现在每当我尝试使用Chrome调试我的测试时,我只看到最小化的源代码。

我是否需要设置一个选项来查看未合并的源?

Gruntfile.js中禁用preprocessors Karma配置就可以了。

var karmaConfig = {
...
  preprocessors: {
    // 'js/**/*.js': 'coverage'
    },
  reporters: ['spec', 'coverage'],
  colors: true,
  singleRun: false,
  usePolling: true,  
...

我找到了一个不涉及丢失覆盖率数据的解决方案!

基于这篇调试Karma单元测试的指南,我提出了以下在IntelliJ中有效的方法:

var sourcePreprocessors = 'coverage';
var isDebugMode = function () {
    return process.argv.some(function (argument) {
        return argument === '--debug';
    });
};
var hasNoCoverage = function () {
    return !(process.argv.some(function (argument) {
        return argument.includes("coverage");
    }));
};
if (isDebugMode() || hasNoCoverage()) {
    console.log("Not generating coverage.");
    sourcePreprocessors = '';
}
config.set({
    ...
    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
        "WebRoot/js/**/*.js": sourcePreprocessors
    },
    ...
});  

注意:

根据这里提到的信息,将以下内容添加到您的karma.conf.js(或无论您如何配置Karma)应该禁用最小化:

coverageReporter: {
  instrumenterOptions: {
    istanbul: { noCompact: true }
  }
}

然而,这并没有删除覆盖数据,并且源文件最终还是被弄乱了:

__cov_SNsw2QFfQtMZHyIEO9CT1A.s['74']++;
my.toPercentageString = function (value) {
    __cov_SNsw2QFfQtMZHyIEO9CT1A.f['18']++;
    __cov_SNsw2QFfQtMZHyIEO9CT1A.s['75']++;
    return numbro(value).format('0.0%');
};
__cov_SNsw2QFfQtMZHyIEO9CT1A.s['76']++;

禁用preprocessors(如@pgpb。不幸的是,Padilla提到的)禁用了代码覆盖(istanbul),如果您使用的是代码覆盖的话。我发现禁用混淆的唯一方法是在没有coverage报告器的情况下单独运行,即karma start karma.config.js --reporters progress,然后单独构建包括覆盖karma start karma.config.js --reporters progress,coverage

最新更新