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):是不是每一行都执行了?