Grunt,Istanbul,Isparta和TypeScript
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Grunt,Istanbul,Isparta和TypeScript相关的知识,希望对你有一定的参考价值。
TL; DR
有没有人使用Grunt和Jasmine成功生成覆盖率报告?
很长的故事:
我有一些用Jasmine编写的测试,我想为它生成一些覆盖信息。为了通用,我实际上使用了grunt-istanbul,它允许一个指导员(比如isparta)来检测我的代码,然后生成一个报告。但是,此报告基于已转换的代码(因此在javascript中)。
然后我遇到了istanbul重映射,它查看由TypeScript编译器生成的地图文件,并将结果基于该数据库;但是,我的指导者在转换后的代码中添加了一些代码,这意味着我的地图文件不再匹配了。至少,这是我想的,因为istanbul-remap说:
错误:找不到源映射:“src / server / modules / service.js”
这是我的grunt配置的一部分:
instrument: {
files: 'src/server/**/*.js',
options: {
lazy: false,
basePath: '.',
babel: {
sourceMap: true
},
instrumenter: require('isparta').Instrumenter
}
},
storeCoverage: {
options: {
dir: 'coverage/reports-server/'
}
},
remapIstanbul: {
dist: {
options: {
reports: {
"html": "./coverage/lcov-report",
"json": "./coverage/coverage.json"
}
},
src: "./coverage/reports-server/coverage.json"
}
},
答案
实际上,我已经能够弄明白了。这里的诀窍如下:
- 用map编译代码
- 将代码复制到临时位置
- 仪器代码
- 执行测试
- 从临时位置复制代码
- 生成报告
这可能看起来很笨重,但它确实有效!在我的grunt文件中,我添加了一个复制任务,以便为我自动执行这些临时位置副本。
最后,我得到了正确可靠的结果。
以上是关于Grunt,Istanbul,Isparta和TypeScript的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 isparta 从业力的代码覆盖范围中排除第三方导入(如 jquery)?
grunt karma 覆盖在 jenkins 上失败,但在 windows/unix 上有效