-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Question] tsc构建时生sourceMap,导致覆盖率报告中没有执行到的源文件100% 覆盖 #89
Comments
没看明白是什么问题,比如现在问题是什么,你期待的结果是什么,描述详细一点 |
实际的覆盖率数据对最终展示的不匹配,实际覆盖率应该在3%左右,sourceMap映射到源码之后覆盖率都显示100% |
理论上覆盖就是要使用sourceMap匹配到源码,看源码的覆盖率才有意义 |
谢谢。我找到了原因了,sourceMap映射没问题。有两个原因:
export function app(req:any ,res:any) { function app2Test(req:any ,res:any) {
|
你说的应该是没有参与测试的源文件应该包含到报告中对吧,那它的覆盖率就是0%,可以通过 如果是ts的源文件,可以使用编译器进行编译,否则无法解析出function,branch这些 const path = require("path");
const swc = require("@swc/core");
const coverageOptions = {
all: {
dir: ['./src'],
transformer: async (entry) => {
const { code, map } = await swc.transform(entry.source, {
filename: path.basename(entry.url),
sourceMaps: true,
isModule: true,
jsc: {
parser: {
syntax: "typescript",
jsx: true
},
transform: {}
}
});
entry.source = code;
entry.sourceMap = JSON.parse(map);
}
}
}; |
我知道你的意思了 你的例子里,覆盖率json 没有包含app2Test的任何覆盖率信息,所以按照默认覆盖一次处理(但实际上可能未覆盖,然而v8并不能提供相关信息) 可能的解决办法:app2Test的代码可能剔除了,因为build工具可能开启了treeShaking功能,把明显不需要的代码过滤掉 if(false) {
// ....
} 这种代码也是可能被build工具剔除的,因为没有存在的意义,永远都不会执行 |
如图,删除src(原始ts 之后覆盖率只有3%),如果原始文件存在,sourceMap 解析之后会显示100%
The text was updated successfully, but these errors were encountered: