在 Jest 文档中,testMatch 配置选项的默认值为
[ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]
。我的问题是,既然我们想要匹配 .js、.jsx、.ts 和 .tsx 等文件扩展名,为什么不是 .[jt]sx??
有两个地方不太明白:
非常感谢。
这是因为
testMatch
被解释为 扩展的 glob 表达式,而不是正则表达式。匹配是通过 micromatch 库完成的。
特别是,扩展的 glob 语法
?(pattern)
相当于正则表达式 (pattern)?
。因此,在默认的 testMatch
值中,[jt]s?(x)
具有 s
(必需的 s
)和 ?(x)
(可选的 x
)。
testRegex
选项相比,它是一个正则表达式。它的默认值是 (/__tests__/.*|(\\.|/)(test|spec))\\.[jt]sx?$
,这更像你所期望的。在此模式中,字符 s
是必需的,而 x?
使 x
在此模式中可选。