Jest中testPathIgnorePatterns配置不生效问题求助
我配置了如下jest.config.js文件:
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ module.exports = { moduleFileExtensions: [ "js", "json", "ts" ], rootDir: ".", testRegex: ".*\\.spec\\.ts$", transform: { "^.+\\.(t|j)s$": "ts-jest" }, testEnvironment: "node", roots: [ "<rootDir>/tests/" ], reporters: [ 'default', [ 'jest-junit', { traitsRegex: [ { regex: /\(Test Type:([^,)]+)(,|\)).*/g, name: 'Category' }, { regex: /.*Test Traits: ([^)]+)\).*/g, name: 'Type' } ] } ] ], "moduleNameMapper": { "^@test/fixtures(|/.*)$": "<rootDir>/fixtures/$1", "^@test/utils(|/.*)$": "<rootDir>/utils/$1", }, setupFilesAfterEnv: ["jest-extended/all"], testPathIgnorePatterns: [ '/node_modules/', '<rootDir>/tests/to-ignore/' ] };
但执行npm test -c jest.config.js时,tests/to-ignore/test.spec.ts仍被执行,我尝试过to-ignore、<rootDir>\/tests\/to-ignore等写法配置testPathIgnorePatterns,均无效。请问问题出在哪里?
确认配置文件是否被正确加载
执行npm test -- --showConfig,查看输出中的testPathIgnorePatterns字段,确认Jest是否读取了你指定的jest.config.js。如果配置不匹配,说明-c参数可能被npm脚本覆盖,此时可以直接用npx jest -c jest.config.js执行,或者修改package.json里的test脚本,确保使用正确的配置文件。调整
testPathIgnorePatterns的正则写法
去掉<rootDir>占位符,直接使用相对路径的正则表达式,Jest会自动基于rootDir匹配路径:testPathIgnorePatterns: [ '/node_modules/', '/tests/to-ignore/' ]也可以使用更简洁的匹配规则,比如直接匹配目录名:
testPathIgnorePatterns: [ '/node_modules/', '/to-ignore/' ]检查路径拼写与大小写
确认测试文件所在目录确实是tests/to-ignore/,注意Linux/macOS系统区分路径大小写,避免出现To-Ignore这类大小写错误的目录名。临时验证规则有效性
可以先添加一个更宽泛的匹配规则(比如/test.spec.ts/),看是否能忽略目标文件。如果生效,说明之前的规则写法存在问题;如果仍不生效,需要排查其他配置冲突(比如roots、testRegex是否与ignore规则冲突)。
内容的提问来源于stack exchange,提问作者mnj

