为啥使用 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>' 错误地扩展了接

使用 Jasmine 测试 Node 项目

错误 TS6200:以下标识符的定义与另一个文件中的标识符冲突 (@types/jasmine)

node.js + coffeescript + jasmine 的好 IDE [关闭]

如何使用node.js jasmine设置断点?

在 Node.js 中使用 Jasmine 测试子 process.send