我记得在过去的某个时候,我可以用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