【发布时间】:2017-10-19 09:41:27
【问题描述】:
查找并运行涵盖以空格分隔的源列表的测试 作为参数传入的文件。用于预提交钩子 集成以运行所需的最少测试量。
这是在官方文档中,但这是如何工作的?它是否分析我项目中的所有导入并且只运行导入我想要测试的文件的测试?我就是这样写的,但真的是这样吗?
相关问题——查找相关测试时是否使用缓存?
【问题讨论】:
标签: jestjs
查找并运行涵盖以空格分隔的源列表的测试 作为参数传入的文件。用于预提交钩子 集成以运行所需的最少测试量。
这是在官方文档中,但这是如何工作的?它是否分析我项目中的所有导入并且只运行导入我想要测试的文件的测试?我就是这样写的,但真的是这样吗?
相关问题——查找相关测试时是否使用缓存?
【问题讨论】:
标签: jestjs
过去几天我一直被同样的问题困扰。在挖掘了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和的测试文件都将导入任何自己导入found-file.js的源文件的测试文件跑步。
正如维护者所说,这是一个“传递反向依赖”的解析器的巧妙实现。您可以在this while loop 中亲自查看。
【讨论】: