【问题标题】:How can I ignore a file pattern for Jest code coverage?如何忽略 Jest 代码覆盖率的文件模式?
【发布时间】:2018-12-02 04:50:50
【问题描述】:

在我的 Jest 测试项目中,我有 *.entity.ts 文件。我不希望这些文件包含在我的覆盖率测试中。

根据https://facebook.github.io/jest/docs/en/configuration.html#coveragepathignorepatterns-array-string 的文档,您可以在package.json 中使用coveragePathIgnorePatterns 设置

我尝试了正则表达式和文件模式,但这些都没有忽略最终报告中的 *.entity.ts 文件。

当我添加例如 "coveragePathIgnorePatterns": ["common"] 时,我的测试甚至不再运行。

关于如何让 Jest 在覆盖测试中跳过 *.entity.ts 有什么想法吗?

package.json 中我的 Jest 部分如下所示:

{
    "moduleFileExtensions": [
        "js",
        "json",
        "ts"
    ],
    "rootDir": "src",
    "testRegex": ".spec.ts$",
    "transform": {
        "^.+\\.(t|j)s$": "ts-jest"
    },
    "coverageDirectory": "../coverage"
}

【问题讨论】:

    标签: javascript jestjs


    【解决方案1】:

    我使用一个外部 JSON 文件来保存我的 Jest 配置并使用 npm 从我的 package.json 运行它:jest --config jest.config.json --no-cache

    jest.config.json

    {
        "collectCoverage": true,
        "collectCoverageFrom": [
            "src/**/*.ts"
        ],
        "coveragePathIgnorePatterns": [
            "node_modules",
            "test-config",
            "interfaces",
            "jestGlobalMocks.ts",
            ".module.ts",
            "<rootDir>/src/app/main.ts",
            ".mock.ts"
        ],
        "coverageDirectory": "<rootDir>/coverage/",
        "coverageThreshold": {
            "global": {
                "branches": 20,
                "functions": 30,
                "lines": 50,
                "statements": 50
            }
        },
        "mapCoverage": true,
        "preset": "jest-preset-angular",
        "setupTestFrameworkScriptFile": "<rootDir>/src/setupJest.ts",
    
        "transformIgnorePatterns": [
            "<rootDir>/node_modules/(?!@ionic-native|@ionic|@ngrx|angular2-ui-switch|angularfire2|jest-cli)"
        ],
        "verbose": false
    }
    

    我的报道不包括“coveragePathIgnorePatterns”中列出的文件。也许源代码行“/src/app/main.ts”就是你需要的入口。

    【讨论】:

    • 简单提醒:路径模式是正则表达式
    【解决方案2】:

    您可以添加一个!在 collectCoverageFrom 参数中标记以将其排除在计数之外。 这里是 src dir 子文件夹中的任何文件

      collectCoverage: true,
      collectCoverageFrom: ['src/**/*.ts','!src/*/filesToExclude.ts']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      • 1970-01-01
      相关资源
      最近更新 更多