为啥使用 jasmine 对 Node typescript 项目进行 Karma 单元测试会显示包含依赖项的覆盖范围?
Posted
技术标签:
【中文标题】为啥使用 jasmine 对 Node typescript 项目进行 Karma 单元测试会显示包含依赖项的覆盖范围?【英文标题】:Why Karma unit tests with jasmine for a Node typescript project shows coverage including a dependency?为什么使用 jasmine 对 Node typescript 项目进行 Karma 单元测试会显示包含依赖项的覆盖范围? 【发布时间】:2020-10-10 00:14:11 【问题描述】:正如题主所说,我们项目的代码覆盖包括一个节点依赖。但是请注意,当我们开发和发布它时,此 npm 依赖项的源代码也是项目的一部分。 这是项目的结构:
根 main_project karma.conf.ts src 和其他要测试的文件以及要为其生成覆盖率的文件 测试 side_project 打包并发布到 npm 并在包括这个在内的多个项目中使用 src 等因此,即使我的 karma 配置位于此处的 main_project(图像中的 src 和 src/*)文件夹中,我想对其进行测试并生成覆盖范围,但 karma 包含 side_project(图像中的 petreol-api-wrapper)以及在报道中,像这样:
这是我的相关业力配置:
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"]
,
【讨论】:
感谢您的建议。然而,它并没有帮助,并且另一个项目仍然显示在报道中。以上是关于为啥使用 jasmine 对 Node typescript 项目进行 Karma 单元测试会显示包含依赖项的覆盖范围?的主要内容,如果未能解决你的问题,请参考以下文章
错误:node_modules/@types/jasmine/index.d.ts:668:15 - 错误 TS2430:接口 'FunctionMatchers<Fn>' 错误地扩展了接
错误 TS6200:以下标识符的定义与另一个文件中的标识符冲突 (@types/jasmine)