阅读(215) (0)

Jest CLI选项

2021-08-10 16:48:23 更新

jest 命令行运行器拥有诸多有用的选项。 运行​jest --help​可以查看所有可用的选项 下面所示选项都可一起使用,以你想要的方式来运行测试。 每一条 Jest 的 配置选项 都可以通过命令行来指定.

大致简述如下:

在命令行运行

运行所有测试(默认)

  1. <code>jest</code>

仅运行符合指定用模板或文件名的测试︰

  1. jest my-test #or
  2. jest path/to/my-test.js

运行基于 hg/git (未提交的文件) 修改的文件的测试︰

  1. jest -o

运行类似​ path/to/fileA.js ​和 ​path/to/fileB.js​的测试︰

  1. jest --findRelatedTests path/to/fileA.js path/to/fileB.js

运行匹配特定名称的测试用例(主要是匹配 ​describe ​或 ​test​的名称)。

  1. jest -t name-of-spec

运行监视模式︰

  1. jest --watch #runs jest -o by default
  2. jest --watchAll #runs all tests

监视模式还能够指定名称或文件路径,从而运行特定的一组测试。

与 yarn 一起使用

如果通过 运行 ​Jest ​yarn test​​,则可以将命令行参数直接作为 Jest 参数传递。

代替:

  1. jest -u -t="ColorPicker"

现在你可以使用

  1. yarn test -u -t="ColorPicker"

使用npm脚本

如果你通过 运行 ​Jest ​npm test​​,你仍然可以通过​--​在​npm test​和 Jest 参数之间插入 a来使用命令行参数。

代替:

  1. jest -u -t="ColorPicker"

现在你可以使用

  1. npm test -- -u -t="ColorPicker"

Camelcase & dashed args 支持

Jest 支持驼峰格式和虚线 arg 格式。以下示例将产生相同的结果:

  1. jest --collect-coverage
  2. jest --collectCoverage

参数也可以混合使用:

  1. jest --update-snapshot --detectOpenHandles

选项

注意:CLI 选项优先于Configuration 中的值。

参考

jest <regexForTestFiles>

当你在运行 ​jest​时附加参数,参数会以正则表达式来匹配项目中的文件。 可通过提供的模式来运行测试。 只会选择并运行匹配模式的测试文件。根据终端的不同,你可能需要引用以下参数:​jest“my.*(complex)?pattern”​。在Windows上,你需要使用​/​作为路径分隔符或转义​\\`as\\\`​。

--bail

别名:​-b​。在​n​失败的测试套件数量后立即退出测试套件。默认为​1​.

--cache

是否使用缓存。 默认值为 true。 使用 ​--no-cache​来禁止缓存。 注意︰ 仅在遇到缓存相关的问题时禁用缓存。 一般来说,禁用缓存会令Jest运行至少慢两倍。

如果要检查缓存,请使用​--showConfig​并查看该​cacheDirectory​值。如果你需要清除缓存,请使用​--clearCache​.

--changedFilesWithAncestor

运行与当前更改和上次提交中所做更改相关的测试。与 ​--onlyChanged​ 的行为相似。

--changedSince

运行与自提供分支以来的更改相关的测试。如果当前分支与给定分支有分歧,则只会测试本地所做的更改。与​--onlyChanged​的行为相似。

--ci

指定该参数时,Jest会认为正在CI环境上运行。 当遇到新的快照时,这会改变原来的行为。 不再是自动的保存新的快照,取而代之的是,它会将测试标记失败,并要求运行Jest时增加​--updateSnapshot​参数。

--clearCache

删除 Jest 的缓存目录, 然后不运行测试直接退出。 如果传递该选项,将删除​cacheDirectory​,或Jest的默认缓存目录。通过调用​jest--showConfig​可以找到默认的缓存目录_

注意:清除缓存将降低性能。

--collectCoverageFrom=<glob>

与​rootDir​匹配需要收集覆盖信息的文件相关的全局模式。

--colors

即便stdout不是TTY模式, 也要强制高亮显示测试结果。

--config=<path>

或: ​-c​. 指定如何查找和执行测试的Jest配置文件的路径。如果配置中未设置​rootDir​,则假定包含配置文件的目录是项目的​rootDir​。这也可以是 JSON 编码的值,Jest可以将其设为基本配置。

--coverage[=<boolean>]

别名: ​--collectCoverage. ​将测试覆盖率信息输出为报告。 可选地传递​<boolean>​以覆盖配置中的选项集。

--coverageProvider=<provider>

指示应使用哪个提供程序来检测代码以进行覆盖。允许的值为​babel​(默认)或​v8​。

请注意,使用​v8​被认为是实验性的。这使用了 V8 的内置代码覆盖率,而不是基于 Babel 的覆盖率。它没有经过很好的测试,而且在 Node.js 的最后几个版本中也得到了改进。使用最新版本的 node(在撰写本文时为 v14)会产生更好的结果。

--debug

打印关于 Jest 配置的调试信息。

--detectOpenHandles

尝试收集和打印阻止 Jest 干净退出的打开句柄。在你需要使用​--forceExit​它以便 Jest 退出以可能追踪原因的情况下使用它。这意味着​--runInBand​,使测试串行运行。使用async_hooks. 此选项具有显着的性能损失,应仅用于调试。

--env=<environment>

用于所有测试的测试环境。这可以指向任何文件或节点模块。示例:​jsdom​,​node​或​path/to/my-environment.js​。

--errorOnDeprecated

使调用已弃用的 API 抛出有用的错误消息。有助于简化升级过程。

--expand

别名:​-e​。使用此标志来显示完整的差异和错误而不是补丁。

--findRelatedTests <spaceSeparatedListOfSourceFiles>

查找并运行覆盖作为参数传入的以空格分隔的源文件列表的测试。对于预提交钩子集成以运行最少数量的必要测试很有用。可与 with 一起使用​--coverage​以包含源文件的测试覆盖率,无需重复​--collectCoverageFrom​参数。

--forceExit

强制Jest在所有测试运行完后退出。 对于一些由测试所生成但无法充分清理的资源来说,这是很有用的。 注意︰ 此功能是escape-hatch。 如果Jest在测试运行最后没有退出,那就意味着外部资源还是被占用,又或是计时器还尚在你的代码中待令。 为了确保Jest可以完全关闭,建议你在每个测试后都关闭用到的外部资源。你可以使用​--detectOpenHandles​来帮助跟踪它。

--help

显示帮助信息,类似于本页文档。

--init

生成一个基础配置文件. 根据你的项目,Jest将向你询问一些问题,这些问题将有助于生成一个​Jest.config.js​文件,其中包含每个选项的简短描述。

--json

以 JSON 格式打印测试结果。此模式会将所有其他测试输出和用户消息发送到 stderr。

--outputFile=<filename>

通过 ​--json ​参数可以将测试结果写入到指定文件。返回的JSON结构记录在 testResultsProcessor.

--lastCommit

运行上次提交中受文件更改影响的所有测试。与​ --onlyChanged​ 的行为相似。

--listTests

将所有测试列为 Jest 将在给定参数的情况下运行的 JSON,然后退出。这可以与​--findRelatedTests​知道 Jest 将运行哪些测试一起使用。

--logHeapUsage

每次测试后记录堆使用情况。用于调试内存泄漏。再加上使用​--runInBand​和​--expose-gc​在节点。

--maxConcurrency=<num>

防止 Jest 同时执行超过指定数量的测试。仅影响使用​test.concurrent​.

--maxWorkers=<num>|<string>

别名:​-w​。设置运行测试的最大工作池数目。在监视模式下,这默认为你机器上可用内核的一半,以确保 Jest 不引人注目并且不会使你的机器停止运行。在​ CI ​等资源有限的环境中进行调整可能很有用,但对于大多数用例来说,默认值应该足够了。

对于具有可变 CPU 可用的环境,你可以使用基于百分比的配置:​ --maxWorkers=50%

--noStackTrace

禁止栈跟踪信息在测试结果输出中。

--notify

激活测试结果通知。当你不希望你的意识能够专注于除 JavaScript 测试之外的任何事情时,这很有用。

--onlyChanged

或: ​-o​. 尝试确定根据当前存储库中哪些已经更改的文件来运行的测试。 仅当你目前正在​git​/​hg​存储库中运行测试,并且需要静态依赖关系图(即不需要动态依赖关系图)时,此功能才有效。

--passWithNoTests

允许在没有找到文件的情况下通过测试。

--projects <path1> ... <pathN>

从一个或多个在指定路径中找到的项目运行测试;也需要路径球。此选项是projects配置选项的 CLI 等效项。请注意,如果在指定路径中找到配置文件,则将运行这些配置文件中指定的所有项目。

--reporters

使用指定的报告器运行测试。无法通过 CLI 使用报告器选项。多个记者的例子:

jest --reporters="default" --reporters="jest-junit"

--runInBand

别名:​-i​。在当前进程中连续运行所有测试,而不是创建运行测试的子进程的工作池。这对于调试很有用。

--selectProjects <project1> ... <projectN>

仅运行指定项目的测试。Jest 使用​displayName​配置中的属性来标识每个项目。如果你使用此选项,你应该为​displayName​所有项目提供一个。

--runTestsByPath

仅运行以其确切路径指定的测试。

注意:默认的正则表达式匹配在小规模运行中运行良好,但如果提供多个​​模式和/或针对大量测试,则速度会变慢。此选项替换正则表达式匹配逻辑,从而优化 Jest 过滤特定测试文件所需的时间

--setupTestFrameworkScriptFile=<file>

模块路径是可以在每个测试运行前,通过运行一些代码来配置或设置测试框架。 请注意,安装脚本导入的文件在测试期间不会被模拟。

--showConfig

输出Jest配置,然后退出。

--silent

阻止所有测试通过控制台输出信息。

--testNamePattern=<regex>

别名︰ ​-t​。 只运行名称与正则表达式匹配的测试。例如,假设你只想运行与具有类似名称的授权相关的测试​"GET /api/posts with auth"​,那么你可以使用​jest -t=auth.

注意:正则表达式与全名匹配,全名是测试名称及其周围所有描述块的组合。

--testLocationInResults

location向测试结果添加字段。如果你想在报告器中报告测试的位置,则很有用。

请注意 column 是从 0 开始,而 line 不是。

  1. {
  2. "column": 4,
  3. "line": 5
  4. }

--testPathPattern=<regex>

在运行测试前,匹配的regexp模式字符串的测试文件路径。 在Windows上,你需要使用/作为路径分隔符或转义​\`as\`​。

--testPathIgnorePatterns=[array]

在执行测试之前针对所有测试路径测试的正则表达式模式字符串数组。与 相反--testPathPattern,它只会运行那些路径与提供的正则表达式不匹配的测试。

--testRunner=<path>

允许你指定自定义测试运行程序。

--testSequencer=<path>

允许你指定自定义测试音序器。具体请参考对应配置属性的文档。

--testTimeout=<number>

默认测试超时时间单位为毫秒。​ 默认值: 5000。​

--updateSnapshot

或: ​-u​. 在运行测试中使用这个参数来重新录制每个失败测试的快照。 还可以和测试套件模式或者和 ​--testNamePattern​ 一起使用,从而重新录制的快照。

--useStderr

转移所有输出到​stderr​(标准错误输出).

--verbose

层次显示测试套件中每个测试的结果。

--version

别名:​-v​。打印版本并退出。

--watch

监视文件的更改并重新运行与更改文件相关的测试。如果要在文件更改时重新运行所有测试,请改用​--watchAll​选项。

--watchAll

观察文件的变化并在发生变化时重新运行所有测试。如果你只想重新运行依赖于已更改文件的测试,请使用​--watch​选项。

使用​--watchAll=false​明确的禁止计时模式。请注意,在大多数 CI 环境中,这会自动为你处理。

--watchman

是否使用 watchman 进行文件抓取。默认值为 true。 禁用使用​--no-watchman​.