Jest使用-t参数执行测试时名称含+等特殊字符运行失败怎么解决?
问题原因
Jest 的 -t/--testNamePattern 命令行参数接收的输入是正则表达式,而非普通精确匹配字符串。+ 属于正则语法中的特殊量词,代表匹配前一个字符 1 次及以上。你传入的 "encode + bar" 会被 Jest 解析为「匹配 encode 后面跟1个及以上空格、再跟 bar 的测试名」,自然匹配不到名称里包含字面量 + 的测试用例。
官方说明
Jest 官方 CLI 文档中对 -t 参数的定义明确标注了其接收值为正则模式,会匹配所有测试名称符合该正则规则的用例。
解决方法
- 转义特殊字符:在
+前加反斜杠转义,使其被识别为字面量符号。注意 shell 环境下的转义规则,用单引号包裹参数时写法如下:
如果用双引号包裹,需要多加一层反斜杠避免 shell 提前转义:node node_modules/.bin/jest --no-coverage -t 'encode \+ bar'node node_modules/.bin/jest --no-coverage -t "encode \\+ bar" - 精确匹配写法:如果要完全匹配测试名称避免误匹配其他用例,可以加上正则起止标记:
node node_modules/.bin/jest --no-coverage -t '^encode \+ bar$' - 临时快速匹配:如果只是临时执行测试不想处理转义,可以用通配符
.替代+位置:node node_modules/.bin/jest --no-coverage -t "encode . bar"
内容的提问来源于stack exchange,提问作者Jörgen
相关产品推荐
相关产品推荐

