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

Cap*_*paj 9 jestjs

查找并运行测试,这些测试涵盖以参数形式传递的空间分隔的源文件列表.对于预提交钩子集成非常有用,可以运行必要的最少量的测试.

这是官方文档,但这是如何工作的?它是否分析了我项目中的所有导入,并且仅运行导入我要测试的文件的测试?这就是我写它的方式,但它真的像那样工作吗?

相关问题 - 在查找相关测试时是否使用缓存?

Mit*_*lie 10

最近几天,我一直在同一个问题。在深入研究Jest源代码之后,我想我对所发生的事情有一个很好的了解。

运行时--findRelatedTests path/to/src-code.js,发生的第一件事是Jest创建一个内部包的实例jest-resolve-dependencies。这是一个非常简单的类,具有两个方法:resolveresolveInverse

findRelatedTestsresolveInverse在我们的示例中,调用您提供的路径,查找每个需要您的文件的源文件和测试文件path/to/src-code.js。该查找直接依赖于某些Jest配置,特别是roots和/或rootDir,以帮助解析路径。

如果找到的文件是测试文件,则Jest将运行它,非常简单。如果找到的文件是一个源文件,调用它found-file.js,那么任何测试文件导入found-file.js 该导入任何的源文件导入自己的测试文件found-file.js将被运行。

正如维护者所说,这是“传递逆相关性”解析器的巧妙实现。您可以在while循环中亲眼看到。