【问题标题】:Is there a straightforward way in Jest to specify an array/list of tests to run?Jest 中是否有一种直接的方法来指定要运行的测试数组/列表?
【发布时间】:2019-12-25 02:26:48
【问题描述】:

问题

我正在编写几个测试套件(使用 Jest 和 Puppeteer)来自动测试我的 AngularJS 应用程序的主页。此时,我的一个测试文件(又名测试套件)中有近 70 个测试。 我想知道是否可以将一组测试名称传递给 Jest 的 -t 选项,以便在我的一个测试文件中运行特定的测试子集。这将有助于调试,因为我有一些相互依赖的测试,因此总是需要一起运行,但是每次我想调试一些测试时,最好避免运行整个测试套件(运行大约一分钟)。

我的测试环境概述:

  • Puppeteer 版本:1.19.0
  • 笑话版本:24.8.0

我试过的笑话命令

我一直在阅读Jest docs,到目前为止,我遇到了一些有可能解决这个问题的 CLI 选项,但到目前为止还没有取得成果。

  1. jest name-of-test-file.spec.js:这会在单个测试文件中运行所有测试,但我不想这样做,我只想在测试文件中运行特定的测试子集。

  2. jest name-of-test-file.spec.js -t name-of-test:这仅在测试文件中运行单个测试,但我想运行几个不同的相互依赖的测试。

  3. jest name-of-test-file.spec.js --testPathPattern=<regex>:这将运行名称与我通过的正则表达式模式匹配的所有测试。这可能会有所帮助,但到目前为止,我还无法提出与三个唯一字符串(即测试名称)匹配的有效正则表达式。不幸的是,我的测试名称差异很大,因此我很难想出一个更通用的正则表达式来匹配我想要运行的特定测试。

最后的想法/问题:

我认为选项 3 最有潜力,但我无法找到有效的正则表达式。

【问题讨论】:

  • 匹配唯一字符串的正则表达式看起来像-testPathPattern=(test1|test2|test3)。我不知道“路径”是否需要更加独特,或者使用部分匹配,但语法非常简单。将所有内容括在括号中,并用竖线分隔“唯一”字符串。

标签: javascript regex jestjs puppeteer


【解决方案1】:

如果regex 选项不适合您,您可以使用it.only(或test.only)仅在模块内运行特定测试。

引用自docs

在调试大型代码库时,您通常只想运行一部分测试。您可以使用.only 指定您只希望运行哪些测试。

代码示例

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

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 1970-01-01
    • 2018-01-17
    • 2010-10-30
    • 1970-01-01
    • 2021-11-22
    • 2016-11-15
    • 2012-04-02
    • 1970-01-01
    相关资源
    最近更新 更多