无法使用 jest testMatch glob 模式定位测试目录
Can't target test directory with jest testMatch glob pattern
假设我有一个如下所示的项目结构:
src/index.js
src/test/foo.js
test/integration/src/index.test.js
test/unit/src/index.test.js
jest.config.json
在 jest.config.json
我有我的 testMatch
{
"testMatch": [
"test/**"
]
}
当我运行与--config jest.config.json
开玩笑时,它匹配0个文件。
testMatch: test/** - 0 matches
testPathIgnorePatterns: /node_modules/ - 5 matches
testRegex: - 0 matches
Pattern: - 0 matches
我认为它可能与某些不正确的 rootDir
有关,因为 testMatch
与此相关。我 运行 开玩笑地在调试模式下查看我的 root,它似乎是正确的。它显示了我的项目目录。 (其中 jest.config.json
存在)
当我将 testMatch
更改为 **/test/**
时,它可以在 test/
目录中检测到我的测试,但这不是我想要的,因为它也与 src/test/
目录匹配.
为什么它无法在 test/
目录中检测到我的测试?我的 glob 模式不正确吗?
Why it cannot detect my tests in test/ directory? Is my glob pattern incorrect?
Jest 的 glob 实现一直在 some issues as of late. Under the hood Jest uses micromatch,但它为何挂在相对路径 glob 上尚不清楚。
您可以在 Jest 配置中尝试一些操作:
- 将
<rootDir>
字符串标记直接包含在 testMatch
glob 中,例如 testMatch: ['<rootDir>/test/**']
。
- 更密切地关注 Jest testMatch documentation 中的 globstar 示例,注意有关 glob 顺序的注释:
Note: Each glob pattern is applied in the order they are specified in the config. (For example ["!/fixtures/", "/tests//.js"] will not exclude fixtures because the negation is overwritten with the second pattern. In order to make the negated glob work in this example it has to come after /tests//.js.)
testMatch: [
'**/test/**',
'!**/src/**'
]
假设我有一个如下所示的项目结构:
src/index.js
src/test/foo.js
test/integration/src/index.test.js
test/unit/src/index.test.js
jest.config.json
在 jest.config.json
我有我的 testMatch
{
"testMatch": [
"test/**"
]
}
当我运行与--config jest.config.json
开玩笑时,它匹配0个文件。
testMatch: test/** - 0 matches
testPathIgnorePatterns: /node_modules/ - 5 matches
testRegex: - 0 matches
Pattern: - 0 matches
我认为它可能与某些不正确的 rootDir
有关,因为 testMatch
与此相关。我 运行 开玩笑地在调试模式下查看我的 root,它似乎是正确的。它显示了我的项目目录。 (其中 jest.config.json
存在)
当我将 testMatch
更改为 **/test/**
时,它可以在 test/
目录中检测到我的测试,但这不是我想要的,因为它也与 src/test/
目录匹配.
为什么它无法在 test/
目录中检测到我的测试?我的 glob 模式不正确吗?
Why it cannot detect my tests in test/ directory? Is my glob pattern incorrect?
Jest 的 glob 实现一直在 some issues as of late. Under the hood Jest uses micromatch,但它为何挂在相对路径 glob 上尚不清楚。
您可以在 Jest 配置中尝试一些操作:
- 将
<rootDir>
字符串标记直接包含在testMatch
glob 中,例如testMatch: ['<rootDir>/test/**']
。 - 更密切地关注 Jest testMatch documentation 中的 globstar 示例,注意有关 glob 顺序的注释:
Note: Each glob pattern is applied in the order they are specified in the config. (For example ["!/fixtures/", "/tests//.js"] will not exclude fixtures because the negation is overwritten with the second pattern. In order to make the negated glob work in this example it has to come after /tests//.js.)
testMatch: [
'**/test/**',
'!**/src/**'
]