查找并运行涵盖空格分隔的源列表的测试 作为参数传入的文件。对于预提交钩子很有用 集成以运行必要的最少量的测试。
这是官方文档,但这是如何工作的?它是否分析了我项目中的所有导入,并且仅运行导入我要测试的文件的测试?这就是我写它的方式,但它真的像那样工作吗?
相关问题 - 在查找相关测试时是否使用缓存?
答案 0 :(得分:4)
最近几天,我一直被一个相同的问题困扰。在深入研究the Jest source code之后,我认为我对发生的事情有一个很好的了解。
运行--findRelatedTests path/to/src-code.js
时,发生的第一件事是Jest创建了内部软件包jest-resolve-dependencies
的实例。这是一个非常简单的类,它具有两种方法:resolve
和resolveInverse
。
findRelatedTests
在您提供的路径上调用resolveInverse
,在我们的示例path/to/src-code.js
中,查找需要该文件的每个源文件和测试文件。该查找直接依赖于某些Jest配置,特别是roots
和/或rootDir
,以帮助解析路径。
如果找到的文件是测试文件,则Jest运行它,非常简单。如果找到的文件是源文件,则将其命名为found-file.js
,然后将其导入found-file.js
的所有测试文件,并将其导入任何本身已导入的源文件的测试文件{ {1}}将运行。
正如维护者所说,这是“传递逆相关性”解析器的巧妙实现。您可以在this while
loop中看到自己的照片。