jest react&& ts

const webpackConfig = require('./creams.config.js');
const aliasList = webpackConfig.alias;
delete aliasList['@'];
const moduleNameMapperConfig = {
  "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
  "\\.(css|less)$": "identity-obj-proxy",
  "@/([^\\.]*)$": "<rootDir>/src/$1",
}
const moduleNameMapper = (alias) => Object.keys(alias).reduce((target, key) => {
  const moduleNameMapperKey = `^${key}(.*)$`;
  const moduleNameMapperValue = alias[key].split('creams-main')[1];
  return {
    [moduleNameMapperKey]: `<rootDir>${moduleNameMapperValue}$1`,
    ...target,
    ...moduleNameMapperConfig
  }
}, {})

module.exports = {
  verbose: true,
  // preset: "babel-preset",
  moduleFileExtensions: ["js", "jsx", "json", "ts", "tsx"],
  //指出是否收集测试时的覆盖率信息。 由于要带上覆盖率搜集语句重新访问所有执行过的文件,这可能会让你的测试执行速度被明显减慢
  collectCoverage: true,
  //指定检查所有需要测试的文件
  collectCoverageFrom: ["**/*.{js,jsx,ts,tsx}"],
  collectCoverageFrom: ["src/**/*.{js,jsx,ts,tsx}","modules/**/*.{js,jsx,ts,tsx}"],
  //测试覆盖率, 阈值不满足,就返回测试失败
  coverageThreshold: {
    global: {
      "branches": 90,
      "functions": 90,
      "lines": 90,
      "statements": 90
    }
  },
  //该路径下的测试,忽略在测试覆盖率上
  coveragePathIgnorePatterns: ["/node_modules/"],
  // cacheDirectory: '<rootDir>/cache',
  testMatch: [
    '<rootDir>/src/**/__tests__/**/*.js?(x)',
    '<rootDir>/src/**/?(*.)(spec|test).js?(x)',
    '<rootDir>/modules/**/__tests__/**/*.js?(x)',
    '<rootDir>/modules/**/?(*.)(spec|test).js?(x)',
  ],
  testPathIgnorePatterns: [ //忽略该路径的文件测试
    '<rootDir>/node_modules/',
    // '<rootDir>/build/',
    // '<rootDir>/scripts/',
    // '<rootDir>/api/',
    // '<rootDir>/jest/setup.js',
    '__mocks__',
  ],
  setupFiles: [
    "<rootDir>/jest/setupTests.js"
  ],
  testEnvironment: 'jsdom',
  transform: {
    "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/jest/fileTransformer.js",
    "^.+\\.(js|jsx|ts|tsx)$": "babel-jest",
    '^.+\\.(css|less)$': "<rootDir>/jest/custom-transformer.js",
  },
  //测试过程不改变满足配置的文件
  transformIgnorePatterns: ['<rootDir>/(node_modules)/', 'babel-runtime',],
  moduleDirectories: ["node_modules", "src"],
  modulePaths: ['<rootDir>/src', '<rootDir>/modules',],
  modulePathIgnorePatterns: ['<rootDir>/node_modules'],
  moduleNameMapper: moduleNameMapper(aliasList)
}

查看 coverage index.html里面的  统计

  • %stmts是语句覆盖率(statement coverage):是不是每个语句都执行了?

  • %Branch分支覆盖率(branch coverage):是不是每个if代码块都执行了?

  • %Funcs函数覆盖率(function coverage):是不是每个函数都调用了?

  • %Lines行覆盖率(line coverage):是不是每一行都执行了?

猜你喜欢

转载自blog.csdn.net/weixin_40222803/article/details/85246820