Karma-coverage 检查 JS 文件中的测试覆盖率,而不是 Angular 2 中的 TS
Posted
技术标签:
【中文标题】Karma-coverage 检查 JS 文件中的测试覆盖率,而不是 Angular 2 中的 TS【英文标题】:Karma-coverage checks test coverage in JS files instead of TS in Angular 2 【发布时间】:2017-03-16 21:33:11 【问题描述】:我通过伊斯坦布尔检查 TypeScript 文件中的测试覆盖率。而且我需要通过 karma-coverage 设置测试阈值。伊斯坦布尔的报告与 karma-coverage 报告不匹配(我使用 Angular-cli),因为 karma-coverage 在 javascript 文件而不是 TypeScript 中检查测试覆盖率。我使用了其他插件,例如 karma-threshold-reporter、istanbul-threshold-checker,但结果相同。我该如何解决?
report generate for typeScript files
report generate for JS files
module.exports = function (config)
config.set(
basePath: '',
frameworks: ['jasmine', 'angular-cli'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-remap-istanbul'),
require('karma-coverage'),
require('angular-cli/plugins/karma')
],
files: [
pattern: './src/test.ts', watched: false
],
preprocessors:
'./src/test.ts': ['angular-cli']
,
remapIstanbulReporter:
reports:
html: 'coverage',
lcovonly: './coverage/coverage.lcov'
,
coverageReporter:
dir: 'coverage/',
reporters: [
type: 'text-summary',
type: 'html'
],
check:
global:
statements: 70,
branches: 70,
functions: 70,
lines: 50
,
angularCli:
config: './angular-cli.json',
environment: 'dev'
,
reporters: ['progress', 'karma-remap-istanbul', 'coverage'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false
);
;
【问题讨论】:
【参考方案1】:plugin: ['karma-remap-istanbul', 'karma-istanbul-threshold'],
coverageReporter:
type: 'in-memory',
,
remapCoverageReporter:
'text-summary': null,
json: './coverage/coverage-final.json',
html: './coverage/html-ts'
,
istanbulThresholdReporter:
src: './coverage/coverage-final.json',
reporters: ['text'],
thresholds:
global:
statements: 90,
branches: 90,
lines: 90,
functions: 90,
,
,
这个配置对我有用。
【讨论】:
以上是关于Karma-coverage 检查 JS 文件中的测试覆盖率,而不是 Angular 2 中的 TS的主要内容,如果未能解决你的问题,请参考以下文章
Karma-Coverage 和伊斯坦布尔 HTML 报告未输出到预期目录
KarmaJS 中的代码覆盖率过高,具有 karma-coverage 和 Jasmine
使用 karma-coverage 和 angularjs 对每个源文件进行代码覆盖