jest --findRelatedTests在引擎盖下是如何工作的?

djmepvbi  于 2022-12-25  发布在  Jest
关注(0)|答案(1)|浏览(206)

查找并运行覆盖以空格分隔的源文件列表的测试,这些源文件是作为参数传入的。这对于预提交钩子集成运行所需的最少数量的测试非常有用。
这是在官方文档中,但是它是如何工作的呢?它分析我项目中的所有导入,并且只运行导入我想要测试的文件的测试吗?我会这样写它,但是它真的是这样工作的吗?
相关问题-查找相关测试时是否使用缓存?

zkure5ic

zkure5ic1#

最近几天我一直被同样的问题困扰着。在深入研究了Jest的源代码之后,我想我已经很清楚是怎么回事了。
运行--findRelatedTests path/to/src-code.js时,Jest首先创建一个内部包jest-resolve-dependencies的示例,这是一个非常简单的类,有两个方法:resolveresolveInverse
findRelatedTests在您提供的路径上调用resolveInverse,查找需要您的文件的每个源文件和测试文件,在我们的示例path/to/src-code.js中。此查找直接依赖于某些Jest配置,特别是roots和/或rootDir,以帮助解析路径。
如果找到的文件是一个测试文件,Jest就会运行它,这很简单;如果找到的文件是一个源文件,就将其命名为found-file.js,那么任何导入found-file.js的测试文件以及导入任何源文件(这些源文件本身导入found-file.js)的测试文件都会运行。
这是一个聪明的实现,正如维护者所说,是一个“传递反向依赖”的解析器,你可以在这个while循环中看到。

相关问题