开玩笑地忽略文件模式以进行代码覆盖

Bas*_*ijk 3 javascript jestjs

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

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

我已经尝试过正则表达式和文件模式,但是这些都不会忽略*.entity.ts最终报告中的文件。

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

关于如何使Jest跳过*.entity.ts覆盖测试的任何想法?

package.json中的“我的笑话”部分如下所示:

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

Gou*_*aul 20

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

  collectCoverage: true,
  collectCoverageFrom: ['src/**/*.ts','!src/*/filesToExclude.ts']
Run Code Online (Sandbox Code Playgroud)

  • 我现在很困惑。有一个!(不是)在collectCoverageFrom中的意思与将该文件正则表达式保留在coveragePathIgnorePatterns中相同吗? (4认同)

all*_*usw 7

您还可以添加package.js以下内容:

... // Other data
"jest": {
    "coveragePathIgnorePatterns" : [
      "<rootDir>/src/index.js",
      "<rootDir>/src/reportWebVitals.js"
    ]
}
... // Other data
Run Code Online (Sandbox Code Playgroud)

这是让它工作所需的唯一配置


Ste*_*ott 6

我使用一个外部JSON文件来保存我的Jest配置,并package.json使用npm 从其运行它: 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
}
Run Code Online (Sandbox Code Playgroud)

我的报道不包括“ coveragePathIgnorePatterns”中列出的文件。也许源行“ /src/app/main.ts”是您需要的条目。

  • `coveragePathIgnorePatterns` 是我正在寻找的答案。已投赞成票。 (2认同)