为什么在 Node TypeScript 项目中使用 Jasmine 进行 Karma 单元测试时,覆盖率会包括依赖项?
正如主题所述,我们项目的代码覆盖范围包括一个 Node 依赖项。然而请注意,这个 npm 依赖项的源代码也是项目的一部分,因为我们负责开发和发布它。项目结构如下:
根
主项目
- karma.conf.ts
- 主项目
- karma.conf.ts
- 待测试的 src 文件及其他文件,并为其生成覆盖率
- 测试
作为边项目打包并发布到 npm,并在包括这个项目在内的多个项目中使用
- 源 等
所以,即使我的 Karma 配置在 main_project(图中为 src 和 src/*)文件夹中,我想要测试并生成覆盖率,Karma 仍然会将 side_project(图中为 petreol-api-wrapper)也包含在覆盖率中,如下所示:
这是我相关的 karma 配置:
const testRecursivePath = "test/*Test.ts";
const srcOriginalRecursivePath = "src/**/*.ts";
frameworks: ["jasmine"],
reporters: [
"progress",
"junit",
"coverage-istanbul"
],
files: [
testRecursivePath,
{
pattern: srcOriginalRecursivePath,
included: false,
served: true
}
],
preprocessors: {
[testRecursivePath]: ["webpack", "coverage"]
},
有人能帮我一下吗?
答案#1
在 karma.conf 中有一个选项可以排除文件,例如,下面的配置将排除 node_modules 文件夹中的所有 ts 文件。你可能需要使用我在下面示例中提供的相对路径。你可以使用 **.* 来忽略所有文件。
exclude: [
"node_modules/**/*.ts"
]
用作
const testRecursivePath = "test/*Test.ts";
const srcOriginalRecursivePath = "src/**/*.ts";
frameworks: ["jasmine"],
reporters: [
"progress",
"junit",
"coverage-istanbul"
],
files: [
testRecursivePath,
{
pattern: srcOriginalRecursivePath,
included: false,
served: true
}
],
exclude: [
"node_modules/**/*.ts"
]
preprocessors: {
[testRecursivePath]: ["webpack", "coverage"]
},
