改进 Jest testMatch 模式匹配器

Improving Jest testMatch pattern matcher

我正在使用 Jest 并使用这个 'testMatch' 模式来匹配我在 jest.config.js:

中的测试文件

testMatch: ['**/?(*.)+(spec).[j|t]s?(x)']

但它错误地拾取了一些以 spec.js 结尾的文件。我希望它只匹配 .spec.js 但我尝试的任何操作都没有找到任何文件。

这个正则表达式似乎符合我的要求/.*\.spec\.[j|t]sx?/,但我认为这些模式匹配器的工作方式略有不同

我需要更改什么才能使其仅提取 [something].spec.js 个文件(或 jsx/ts/tsx)?

如您所述,这些模式实际上并不是正则表达式。如果您正在寻找关键字来开始搜索,它们就是一种“全局模式”。我也可能弄错了,但我很确定你想要 [jt](j|t),而不是 [j|t],但可能无关紧要。

话虽这么说,听起来您更喜欢正则表达式语法而不是 glob 语法。我不能说我怪你!与其尝试找出与您所追求的正则表达式产生相同行为的 glob,不如查看 --testRegex 选项(这也是 属性 名称 jest.config.js 文件).

看这里:https://jestjs.io/docs/configuration#testregex-string--arraystring 作为奖励,出于毫无意义的原因,testMatch 只能采用一组模式,但 testRegex 可以采用字符串(如果只有一个模式要匹配)或数组