grunt-karma调试未经授权的来源

时间:2014-05-09 08:35:48

标签: debugging gruntjs karma-runner

我记得在过去的某个时刻,我可以使用Chrome开发工具调试我的测试,并进入我未经证实的来源。

我不确定这是否是一个已更改的配置选项,但现在每当我尝试使用Chrome调试我的测试时,我只会看到缩小的来源。

我需要设置一个选项来查看未经授权的来源吗?

3 个答案:

答案 0 :(得分:9)

禁用preprocessors中的Gruntfile.js Karma配置。

var karmaConfig = {
...

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

...

答案 1 :(得分:5)

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

根据Debugging Karma Unit Tests的指南,我提出了以下内容,它适用于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
    },
    ...
});  

注意:

根据提及here的信息,将以下内容添加到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']++;

答案 2 :(得分:2)

禁用preprocessors(如提及的@ pgpb.padilla),遗憾的是禁用代码覆盖率(istanbul),如果这是您使用的内容。我发现,禁用混淆的唯一方法是在没有coverage报告者的情况下单独运行,karma start karma.config.js --reporters progress然后单独运行,包括覆盖范围karma start karma.config.js --reporters progress,coverage