Jest在这方面给出的解决方案很少,我已经尝试了大部分的解决方案,如--findRelatedTests
,--onlyChanged
,--changedSince
,但每个解决方案都有一些缺点,我认为--changedSince
是最适合我的。
jest --changedSince=origin/master --coverage
它主要涵盖了一些基本的场景,比如运行与更改的源文件相对应的测试文件,但是它没有处理一些场景,比如(如a.js
)已删除,且相同(a.js
)正在使用(导入的)在另一个文件(比如b.js
)中,它不会对任何文件(a.js
或b.js
)运行 tests。
是否有一个干净的解决方案,可以处理所有的情况,如文件重命名/删除,动态导入,运行测试的父模块,其中它是导入或任何其他影响,可能会发生在您改变一个源文件?
1条答案
按热度按时间vyswwuz21#
我通过三个步骤实现了这一目标。
你可以通过一些脚本来实现这一点。首先你需要通过Git得到一个所有更改过的文件的列表。
这可以通过如下函数实现:
其次,您需要获得这些文件的相关测试列表,如下所示:
最后,您可能希望将所有这些测试都添加到jest以运行;
这个实现的一个限制是我总是与master进行比较,这不是一个好的假设。在特殊情况下,一个分支可能选择与另一个分支合并。
这可以用几种方法来处理;
1.如果正在运行cli,请将参数传递给cli并在脚本中使用它
1.如果您在Gitlab这样的管道中运行,并假设这是一个MR/PR,请考虑使用一些可用的环境变量(在本例中为CI_MERGE_REQUEST_TARGET_BRANCH_NAME)