问题
我正在编写几个测试套件(使用 Jest 和 Puppeteer)来自动测试我的 AngularJS 应用程序的主页。此时,我的一个测试文件(又名测试套件)中有近 70 个测试。 我想知道是否可以将测试名称数组传递给 Jest 的 -t
在我的测试文件之一中运行特定测试子集的选项。 这对于调试很有帮助,因为我有一些相互依赖的测试,因此总是需要一起运行,但最好避免每次我想调试一些测试时,都必须运行整个测试套件(运行大约一分钟)。
我的测试环境概述:
- Puppeteer 版本:1.19.0
- Jest 版本:24.8.0
我尝试过的 Jest 命令
我一直在阅读 Jest docs到目前为止,我已经遇到了一些有可能解决这个问题的 CLI 选项,但到目前为止还没有取得成果。
jest name-of-test-file.spec.js
:这会在单个测试文件中运行所有测试,但我不想这样做,我只想在测试文件中运行特定的测试子集。jest name-of-test-file.spec.js -t name-of-test
:这仅在测试文件中运行单个测试,但我想运行一些不同的相互依赖的测试。jest name-of-test-file.spec.js --testPathPattern=<regex>
:这将运行名称与我通过的正则表达式模式匹配的所有测试。它可能会有所帮助,但到目前为止我还无法想出一个与三个唯一字符串(即测试名称)匹配的有效正则表达式。不幸的是,我的测试名称差异很大,因此我很难想出一个更通用的正则表达式来匹配我想要运行的特定测试。
最终想法/问题:
我认为选项 3 最具潜力,但我还没有找到有效的正则表达式。
最佳答案
如果regex
选项不适合您,您可以使用it.only
(或test.only
)仅运行特定的在模块内进行测试。
引自 docs :
When you are debugging a large codebase, you will often only want to run a subset of tests. You can use
.only
to specify which tests are the only ones you want to run.
代码示例
it.only('This test will run', /*... */);
it.only('This test will also run', /*... */);
it('This test will not run', /*... */);
但是,如果您有多个测试文件,您仍然需要指定要运行的模块或文件:
jest name-of-test-file-to-run.spec.js
关于javascript - Jest 中是否有一种直接的方法来指定要运行的测试数组/列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57564000/