【发布时间】:2014-05-09 08:35:48
【问题描述】:
我记得在过去的某个时候,我实际上可以使用 Chrome 开发工具调试我的测试并进入我未缩小的源代码。
我不确定这是否是一个已更改的配置选项,但现在每当我尝试使用 Chrome 调试我的测试时,我只能看到缩小的源代码。
我需要设置一个选项来查看未缩小的来源吗?
【问题讨论】:
标签: debugging gruntjs karma-runner
我记得在过去的某个时候,我实际上可以使用 Chrome 开发工具调试我的测试并进入我未缩小的源代码。
我不确定这是否是一个已更改的配置选项,但现在每当我尝试使用 Chrome 调试我的测试时,我只能看到缩小的源代码。
我需要设置一个选项来查看未缩小的来源吗?
【问题讨论】:
标签: debugging gruntjs karma-runner
在Gruntfile.js 中禁用preprocessors Karma 配置即可。
var karmaConfig = {
...
preprocessors: {
// 'js/**/*.js': 'coverage'
},
reporters: ['spec', 'coverage'],
colors: true,
singleRun: false,
usePolling: true,
...
【讨论】:
我找到了一个不涉及丢失覆盖数据的解决方案!
根据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']++;
【讨论】:
如果您使用的是禁用preprocessors(就像提到的@pgpb.padilla),不幸的是会禁用代码覆盖(伊斯坦布尔)。我发现禁用混淆的唯一方法是在没有coverage 记者的情况下单独运行,即karma start karma.config.js --reporters progress,然后单独为构建包括覆盖karma start karma.config.js --reporters progress,coverage
【讨论】: