React Testing Library中Jest环境下如何仅测试单个指定模块
解决Jest+React Testing Library仅测试单个Module.spec.js模块的问题
我来帮你搞定这个问题!你当前的命令会运行所有文件名包含Module的测试文件,是因为Jest默认对传入的参数做模糊匹配。下面是几个精准指定单个Module.spec.js测试的可行方案:
方案1:指定完整相对路径
直接在命令里传入测试文件的完整相对路径,Jest就会只运行这个特定文件:
env DEBUG_PRINT_LIMIT=50000 npm test -- ./path/to/your/Module.spec.js --watch
比如如果这个文件就在你当前所在的组件目录下,简化成:
env DEBUG_PRINT_LIMIT=50000 npm test -- ./Module.spec.js --watch
方案2:使用--testPathPattern参数精准匹配
如果需要更严格的路径匹配,可以用Jest的--testPathPattern参数,指定文件的精确路径正则:
env DEBUG_PRINT_LIMIT=50000 npm test -- --testPathPattern="./src/components/YourTargetComponent/Module.spec.js" --watch
这个参数会强制Jest只匹配符合该路径的测试文件,完全避免同名文件的干扰。
方案3:在Watch模式中动态筛选
如果你已经启动了watch模式(也就是命令里的--watch),可以直接在终端里按p键,然后输入你要测试的文件的精确名称或路径片段,Jest会实时筛选出对应的单个测试文件并运行。
为什么原命令会跑所有同名模块?
Jest对npm test -- Module中的Module做的是模糊文件名匹配,它会遍历所有测试文件,运行所有文件名包含Module的测试,所以才会出现跑多个同名模块的情况。只要把参数改成精确的文件路径就能解决这个问题啦。
内容的提问来源于stack exchange,提问作者Bablu Ahmed
相关产品推荐
相关产品推荐

