忽略“忽略”提示

时间:2018-01-16 15:30:28

标签: reactjs code-coverage jest istanbul

我试图向Jest / Istanbul提供忽略提示,但它们被完全忽略 - 覆盖范围不变。例如:

/* istanbul ignore if */
if (process.env.NODE_ENV === 'development') {
    const fromStateStr = JSON.stringify(fromState);
    const toStateStr = JSON.stringify(toState);
    console.log(
        `RouterStore.transition(${fromStateStr}, ${toStateStr})`
    );
}

我还尝试了/* istanbul ignore next */个别行,但没有变化。我错过了一些设置吗?这是我的Jest配置:

"jest": {
  "transform": {
    ".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js"
  },
  "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
  "moduleFileExtensions": [
    "ts",
    "tsx",
    "js"
  ],
  "setupFiles": [
    "./test/test-shim.ts",
    "./test/test-setup.ts"
  ],
  "coveragePathIgnorePatterns": [
    "/node_modules/",
    "/test/"
  ],
  "coverageThreshold": {
    "global": {
      "branches": 90,
      "functions": 95,
      "lines": 95,
      "statements": 95
    }
  },
  "collectCoverage": true,
  "mapCoverage": true
}

1 个答案:

答案 0 :(得分:0)

原因是TypeScript编译器正在删除所有注释,包括Istanbul提示。因此,测试忽略了所有提示。不得不将"removeComments": false添加到tsconfig.json以使其工作。

P.S。感谢Lucian Lature指出这一点。