我正在使用 Jest 做一些有点奇怪的东西来测试我在哪里写一些东西到磁盘。但是,如果我在 Jest 中使用 watch
标志,那么我会发现(很明显)每次我将某些内容写入磁盘时,测试都会重新启动。
我目前没有任何配置,我查看了 the documentation,但我真的不清楚我需要使用哪个选项来禁止观看特定文件。我相信我可以看到从代码覆盖和测试执行中排除代码的选项,但看不到实际的观察者。
就我而言,我有这样的设置,我只想禁止我的结果目录:
__测试__
__snapshots__(由 Jest 创建)
结果(由我和要排除的目录创建)
testfile1.js
我怎样才能做到这一点?
从文档中,您需要添加 modulePathIgnorePatterns 这是一个字符串值数组,将与之匹配
modulePathIgnorePatterns [array
https://facebook.github.io/jest/docs/configuration.html#modulepathignorepatterns-array-string
将此添加到您的配置中...
modulePathIgnorePatterns: ["directoryNameToIgnore"]
或者:
modulePathIgnorePatterns: ["<rootDir>/dist/"]
要从 Jest 测试中排除目录,请使用 testPathIgnorePatterns
testPathIgnorePatterns
"testPathIgnorePatterns": ["directory to ignore"]
在 package.json 文件下面,我已配置为忽略“src”目录
{
"name": "learn-test",
"jest": {
"testPathIgnorePatterns": ["src"]
},
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.4.1",
"react-dom": "^16.4.1",
"react-scripts": "1.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "jest --watch",
"eject": "react-scripts eject",
},
"devDependencies": {}
}
"testPathIgnorePatterns": ["<rootDir>/cypress/"]
见这里:github.com/wallabyjs/public/issues/2245
modulePathIgnorePatterns
有什么区别?
当我有一个不能测试的目录时,我遇到了同样的问题,尽管我仍然希望它位于 __tests__
目录中(例如,__mocks__
)。
在这种情况下,您不应使用相对路径(无斜杠)。因此,在您的 package.json
文件中添加:
jest: {
"modulePathIgnorePatterns": ["__mocks__"]
}
这解决了我的问题。
根据 Jest 文档,watchPathIgnorePatterns 应该是您想要的方式。这适用于 Jest 23.xx 及更高版本。
您可以将此配置添加到 jest.config.js
或 package.json > jest
要排除整个文件夹,请在 package.json 文件的“jest”属性中添加以下内容:
"modulePathIgnorePatterns": [
"<rootDir>/src/services"
],
要排除单个文件:
"collectCoverageFrom": [
"!src/index.js"
],
我使用以下模式,它适用于我:
collectCoverageFrom: [
'src/**/*.js',
'!src/api/graphql/**/*.js',
'!src/action/**/*.js',
'!src/utils/dev/*.js',
'!src/**/*.e2e.js',
],
!表示我们排除文件夹或文件。
开玩笑版本:27.2.1
为了从测试和覆盖中排除:
"testPathIgnorePatterns" : [
"tests/login/default/MockStrategy.js",
],
coveragePathIgnorePatterns: [
"tests/login/default/MockStrategy.js"
],
在大多数情况下,您会收到错误:您的测试套件必须包含至少一个测试。
要从测试中忽略/排除文件或文件夹,请修改 package.json
如果块“jest”不存在,那么添加它:
...
"jest": {
"collectCoverage": true,
"testPathIgnorePatterns" : [
"__tests__/properties.js",
"__tests__/properties.js.sample"
]
},
...
这是我的 2 美分,因为我觉得上面的答案有些混乱:
以下是 package.json 文件中的笑话段:
"jest": {
"testPathIgnorePatterns": ["wallet-svc/src/db/"],
"coveragePathIgnorePatterns": ["wallet-svc/src/db/"],
"modulePathIgnorePatterns": ["wallet-svc/src/db/"],
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": "src",
"testRegex": ".*\\.spec\\.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"testEnvironment": "node"
}
如果你注意到我提到了 3 个忽略 - “testPathIgnorePatterns”、“coveragePathIgnorePatterns”和“modulePathIgnorePatterns”。当您运行测试时会发生这种情况,文件被忽略,但是当您运行覆盖时,jest 不会忽略这些文件,您会在覆盖报告中看到它们。最好包含所有 3 个标签。
我发现这个帖子很有帮助:https://github.com/facebook/jest/issues/1815#issuecomment-684882428
可以使用最新版本的 create-react-app 中的“collectCoverageFrom”跳过测试用例报告集合中的文件,开玩笑:
"jest": {
"collectCoverageFrom": [
"src/**/*.{js,jsx,ts,tsx}",
"!<rootDir>/src/registerServiceWorker.js",
"!<rootDir>/src/serviceWorker.js",
"!<rootDir>/node_modules/"
]
},
Note: This option requires collectCoverage to be set to true or Jest to be invoked with --coverage.
我在 package.json
中使用此配置从覆盖率报告中排除 index.js
和 reportWebVitals.js
文件。
"jest": {
"collectCoverageFrom": [
"!<rootDir>/src/reportWebVitals.js",
"!<rootDir>/src/index.js"
],
}
"jest": { "modulePathIgnorePatterns": ["__tests__/results/"] },
,但不幸的是它不起作用。__tests__
是jest
用来加载其测试的默认目录。所以重命名会很尴尬,我可以将我的results
目录移到__tests__
之外,但我不愿意这样做,除非我找不到替代品。