跳到主要内容
版本:27.0

配置开玩笑

jest的配置可以在其中定义<代码>package.json文件的项目,或通过<代码>jest.config.js.。, 或者<代码>jest.config.ts文件或通过<代码>——配置<路径/ / file.js | ts | cj | mj | json >选项。如果你想用你的<代码>package.json存储Jest的Config,<代码>“开玩笑”应在顶级使用键,所以Jest将知道如何找到您的设置:

“名称” “我的项目”
“开玩笑”
“verbose” 真的

或通过JavaScript:

/ / jest.config.js
/ /同步对象
/ ** @type {导入('@ jest / types')。config.initialOptions} * /
常量 配置 =
verb 真的
模块 出口 = 配置
//或异步函数
模块 出口 = 异步 =>
返回
verb 真的

或通过类型签字(如果<代码>ts-node已安装):

// jest.config.ts.
进口 类型 配置 '@ jest / types'
/ /同步对象
常量 配置 配置 InitialOptions =
verb 真的
出口 默认 配置
//或异步函数
出口 默认 异步 承诺 < 配置 InitialOptions > =>
返回
verb 真的

请记住,生成的配置必须是JSON-Serializable。

使用时<代码>-康法选项,JSON文件不得包含“JEST”键:

“保释” 1
“verbose” 真的

选项<一个班级="hash-link" href="#options" title="#">#

这些选项让您控制jest在您的行为<代码>package.json文件。Jest的理念是在默认情况下工作得很好,但有时您只是需要更多的配置功能。

默认值<一个班级="hash-link" href="#defaults" title="#">#

如果需要,您可以检索Jest的默认选项来展开它们:

/ / jest.config.js
常量 默认值 = 需要 'jest-config'
模块 出口 =
// ......
moduleFileExtensions ... 默认值 moduleFileExtensions 'ts' 'tsx'
// ......

参考<一个班级="hash-link" href="#reference" title="#">#

automock[布尔]<一个班级="hash-link" href="#automock-boolean" title="#">#

默认:<代码>错误的

此选项告诉Jest,您的测试中的所有导入模块都应自动模拟。测试中使用的所有模块都将具有替换实现,保持API表面。

例子:

// utils.js.
出口 默认
授权 =>
返回 “令牌”
isa授权 秘密 => 秘密 ===. “向导”
//____tests__/automocking.test.js.
进口 利用者 '../utils'
测试 '如果使用自动嘲笑' =>
// utils的公共方法现在是模拟函数
预计 利用者 授权 嘲笑 Tobeththy.
预计 利用者 isa授权 嘲笑 Tobeththy.
//你可以用你自己的实现提供它们
//或通过预期的返回值
利用者 授权 mockreturnvalue. 'mocked_token'
利用者 isa授权 mockreturnvalue. 真的
预计 利用者 授权 成为 'mocked_token'
预计 利用者 isa授权 “not_wizard” Tobeththy.

注意:当您有手动模拟时,节点模块会自动嘲笑(例如:<代码>__mocks__/lodash.js).更多信息<一个href="//www.ieatrice.com/docs/manual-mocks">在这里

注意:核心模块,如<代码>FS.,默认情况下不会嘲笑。它们可以明确地嘲笑,就像<代码>开玩笑。嘲笑('fs')

保释(号码|布尔)<一个班级="hash-link" href="#bail-number--boolean" title="#">#

默认:<代码>0

默认情况下,Jest在完成后运行所有测试并在控制台中生成所有错误。可以在此处使用Bail配置选项以在此之后具有Jest停止运行测试<代码>n失败。设置保释到<代码>真的与设置保释相同<代码>1

cacheDirectory[细绳]<一个班级="hash-link" href="#cachedirectory-string" title="#">#

默认:<代码>“/ tmp /

Jest应该在其中存储缓存的依赖项信息的目录。

jest尝试扫描依赖树(上面)并缓存它,以便缓解在运行测试时需要发生的一些文件系统耙。此配置选项允许您自定义Jest存储磁盘上的缓存数据的位置。

clearMocks[布尔]<一个班级="hash-link" href="#clearmocks-boolean" title="#">#

默认:<代码>错误的

在每个测试之前自动清除模拟调用和实例。相当于调用<代码>笑话。ClearAllMocks()每次测试之前。这不会删除可能提供的任何模拟实现。

collectCoverage[布尔]<一个班级="hash-link" href="#collectcoverage-boolean" title="#">#

默认:<代码>错误的

指示在执行测试时是否应该收集覆盖率信息。因为这将使用覆盖率收集语句对所有执行的文件进行更新,它可能会显著地减慢您的测试。

collectCoverageFrom(数组)<一个班级="hash-link" href="#collectcoveragefrom-array" title="#">#

默认:<代码>未定义的

一系列<一个href="https://github.com/micromatch/micromatch" target="_blank" rel="noopener noreferrer">一团模式表示应该收集覆盖信息的一组文件。如果文件与指定的直接模式匹配,即使此文件不存在测试,也会为其收集覆盖信息,并且测试套件中从不需要。

例子:

“collectCoverageFrom”
“** / *。{JS,JSX}”
”!* * / node_modules / * *”
”!* * /供应商/ * *”

这将收集项目内的所有文件的覆盖范围信息<代码>rootdir.,除了匹配的那些<代码>** / node_modules / **或者<代码>**/小贩/**

注意:每个Glob模式按配置顺序应用它们。(例如<代码>[" !* * / __tests __/**", "**/*. js”)不会排除<代码>__tests__因为否定被第二种模式覆盖了。为了让这个带有否定的glob在这个例子中工作,它必须放在后面<代码>** / *。js.)

注意:这个选项需要<代码>collectCoverage设置为true或调用Jest<代码>——覆盖

亚搏取款帮助:如果您看到覆盖范围,例如...
===============================覆盖摘要===============================.
陈述:未知%(0/0)
分支:未知% (0/0)
功能:未知%(0/0)
线条:未知%(0/0)
================================================================================.
没有找到全局的覆盖数据。

您的glob模式很可能不匹配任何文件。指的是<一个href="https://github.com/micromatch/micromatch" target="_blank" rel="noopener noreferrer">micromatch.保证您的Globs兼容的文档。

CoverAdedIrectory.[细绳]<一个班级="hash-link" href="#coveragedirectory-string" title="#">#

默认:<代码>未定义的

Jest应该在其中输出其覆盖文件的目录。

coveragepatepathorepatterns.(数组<字符串>)<一个班级="hash-link" href="#coveragepathignorepatterns-arraystring" title="#">#

默认:<代码>[“/ node_modules /”]

在执行测试之前,匹配所有文件路径的regexp模式字符串数组。如果文件路径匹配任何模式,覆盖率信息将被跳过。

这些模式字符串与完整路径匹配。使用<代码>字符串标记,以包含到项目根目录的路径,以防止它意外地忽略不同环境中可能有不同根目录的所有文件。例子:<代码>[" < rootDir > /构建/”,“< rootDir > / node_modules /”)

coverageProvider[细绳]<一个班级="hash-link" href="#coverageprovider-string" title="#">#

表示哪些提供商应该用于介绍覆盖的仪器代码。允许值为<代码>禁止禁忌(默认)或<代码>v8

注意使用<代码>v8被认为是实验性的。这使用V8的内置代码覆盖而不是基于Babel的内置码。它不太经过测试,并且在最后几个节点释放中也有所改善。使用最新版本的节点(在本写作时的v14)将产生更好的结果。

隐蔽的人力(<字符串数组|[字符串,选项]>]<一个班级="hash-link" href="#coveragereporters-arraystring--string-options" title="#">#

默认:<代码>[“JSON”,“LCOV”,“文本”,“Clover”]

Jest在撰写报道时使用的记者姓名列表。任何<一个href="https://github.com/istanbuljs/istanbuljs/tree/master/packages/istanbul-reports/lib" target="_blank" rel="noopener noreferrer">伊斯坦布尔记者可以使用。

注意:设置此选项会覆盖默认值。添加<代码>“文本”或者<代码>“文本摘要”在控制台输出中查看覆盖率摘要。

注意:您可以使用元组表单将其他选项传递给istanbul报道。例如:

“json” “lcov” “projectroot” “../../”

有关您可以参考选项对象形状的其他信息<代码>CoverageReporterWithOptions输入<一个href="https://github.com/facebook/jest/tree/master/packages/jest-types/src/Config.ts" target="_blank" rel="noopener noreferrer">类型定义

coverageThreshold[目的]<一个班级="hash-link" href="#coveragethreshold-object" title="#">#

默认:<代码>未定义的

这将用于为覆盖结果配置最小阈值强制。阈值可以指定为<代码>全球的,作为一个<一个href="https://github.com/isaacs/node-glob" target="_blank" rel="noopener noreferrer">glob,以及作为目录或文件路径。如果没有满足阈值,则Jest将失败。指定为正数的阈值被认为是所需的最小百分比。指定为负数的阈值表示允许的未覆盖实体的最大数量。

例如,对于以下配置,如果分支、行和函数覆盖率小于80%,或者超过10条未覆盖的语句,则jest将失败:

...
“开玩笑”
“coverageThreshold”
“全球的”
“分支机构” 80
“功能” 80
“线” 80
“陈述” -10

如果旁边指定了Globs或Paths<代码>全球的,从整体覆盖中减去匹配路径的覆盖数据,独立应用阈值。globs的阈值应用于所有匹配glob的文件。如果没有找到path指定的文件,将返回一个错误。

例如,具有以下配置:

...
“开玩笑”
“coverageThreshold”
“全球的”
“分支机构” 50.
“功能” 50.
“线” 50.
“陈述” 50.
“./src/components/”
“分支机构” 40
“陈述” 40
“./src/reducers/**/*.js”
“陈述” 90
“./src/api/very-important-module.js”
“分支机构” 100.
“功能” 100.
“线” 100.
“陈述” 100.

jest将失败,如果:

  • 的<代码>。/src /components.目录具有少于40%的分支或声明覆盖范围。
  • 其中一个文件与<代码>。/src /reducers/**/*.js.Glob的语句覆盖率不到90%。
  • 的<代码>。/src /一个pi/very-important-module.js.文件的覆盖率低于100%。
  • 所有剩下的文件合并后的覆盖率小于50% (<代码>全球的).

dependencyExtractor[细绳]<一个班级="hash-link" href="#dependencyextractor-string" title="#">#

默认:<代码>未定义的

此选项允许使用自定义依赖性提取器。它必须是一个节点模块,该节点模块将对象导出<代码>提炼功能。例如。:

常量 加密 = 需要 'crypto'
常量 FS. = 需要 “fs”
模块 出口 =
提炼 代码 文件路径 defaultExtract
常量 DEPS. = defaultExtract 代码 文件路径
//扫描文件并在`deps`中添加依赖项(这是一个`set`)
返回 DEPS.
getcachekey.
返回 加密
群集 'MD5'
更新 FS. readFileSync __文件名
消化 十六进制的

的<代码>提炼函数应该返回易于迭代(<代码>大批,<代码>放,等等)与代码中找到的依赖项。

该模块还可以包含一个<代码>getcachekey.生成缓存键的函数以确定逻辑是否已更改,并且应丢弃依赖它的任何缓存伪像。

displayName[字符串,对象]<一个班级="hash-link" href="#displayname-string-object" title="#">#

默认:<代码>未定义的

允许在运行时与测试一起打印标签。这在多项目存储库中变得更加有用,其中可能有许多关于CEMET配置文件。这在视觉上讲述了测试所属的项目。以下是示例有效值。

模块 出口 =
displayName '客户'

或者

模块 出口 =
displayName
的名字 '客户'
颜色 “蓝”

作为次要选项,具有属性的对象<代码>的名字和<代码>颜色可以通过。这允许对displayName的背景颜色进行自定义配置。<代码>displayName当其值为字符串时默认为白色。jest用途<一个href="https://github.com/chalk/chalk" target="_blank" rel="noopener noreferrer">粉笔提供颜色。因此,Chalk支持的颜色的所有有效选项也由Jest支持。

ErrorOneprecated.[布尔]<一个班级="hash-link" href="#errorondeprecated-boolean" title="#">#

默认:<代码>错误的

使调用弃用API掷出有用的错误消息。亚搏取款有助于缓解升级过程。

extensionsToTreatAsEsm(数组<字符串>)<一个班级="hash-link" href="#extensionstotreatasesm-arraystring" title="#">#

默认:<代码>[]

Jest将运行<代码>。mjs和<代码>。js.与最近的文件<代码>package.jsons<代码>类型字段设置为<代码>模块作为ECMAScript模块。如果您有任何应使用本机ESM运行的任何其他文件,则需要在此处指定其文件扩展名。

注:Jest对ESM的支持仍处于试验阶段<一个href="//www.ieatrice.com/docs/ecmascript-modules">其文档有yabo2013关更多详细信息

...
“开玩笑”
“extensionsToTreatAsEsm” “.ts”

elpllobals.(数组<字符串>)<一个班级="hash-link" href="#extraglobals-arraystring" title="#">#

默认:<代码>未定义的

测试文件运行在<一个href="https://nodejs.org/api/vm.html" target="_blank" rel="noopener noreferrer">VM.,这会减慢调用全局上下文属性(例如:<代码>数学).使用此选项,您可以指定要在VM内部定义的额外属性以进行更快的查找。

例如,如果您的测试呼叫<代码>数学通常,您可以通过设置传递它<代码>elpllobals.

...
“开玩笑”
“Extraglebals” “数学”

forcecoveragematch.(数组<字符串>)<一个班级="hash-link" href="#forcecoveragematch-arraystring" title="#">#

默认:<代码>['']

通常从收集代码覆盖范围内忽略测试文件。使用此选项,您可以覆盖此行为,并在代码覆盖范围内忽略其他忽略的文件。

例如,如果您在命名的源文件中有测试<代码>。js.扩展:

/ / sum.t.js
出口 功能 一个 b
返回 一个 + b
如果 过程 env NODE_ENV ===. “测试”
测试 '和' =>
预计 1 2 成为 3.

您可以使用设置从这些文件中收集覆盖范围<代码>forcecoveragematch.

...
“开玩笑”
“forcecoveragematch” “** / *。t.js”

全局[目的]<一个班级="hash-link" href="#globals-object" title="#">#

默认:<代码>{}

需要在所有测试环境中可用的一组全局变量。

例如,以下将创建一个全局<代码>__dev__变量设置为<代码>真的在所有测试环境中:

...
“开玩笑”
“全局”
“__dev__” 真的

请注意,如果您在这里指定了一个全局引用值(比如一个对象或数组),并且一些代码在运行测试的过程中改变了该值,那么该改变将会发生持续跨测试运行为其他测试文件。除此之外<代码>全局对象必须是json可序列化的,因此不能用于指定全局函数。为此,您应该使用<代码>设置文件s.

globalsetup.[细绳]<一个班级="hash-link" href="#globalsetup-string" title="#">#

默认:<代码>未定义的

此选项允许使用自定义全局设置模块,该模块导出所有测试套件之前触发一次的异步函数。这个函数得到了jest的<代码>GlobalConfig对象作为参数。

注意:只有在从该项目中运行至少一个测试时,才会触发在项目中配置的全局安装程序模块(使用多项目运行器)。

注意:通过定义的任何全局变量<代码>全局etup.只能读取<代码>globalTeardown.您无法检索在测试套件中定义的全局。

注意:虽然代码转换应用于链接的设置文件,但Jest将会转换任何代码<代码>node_modules..这是由于需要加载实际的变压器(例如。<代码>禁止禁忌或者<代码>类型签字)进行转型。

例子:

// setup.js.
模块 出口 = 异步 =>
// ......
//设置对Mongod的引用,以便在拆卸期间关闭服务器。
全球的 __Mongod__ = 蒙多
// teardown.js.
模块 出口 = 异步 功能
等待 全球的 __Mongod__ 停止

globalTeardown[细绳]<一个班级="hash-link" href="#globalteardown-string" title="#">#

默认:<代码>未定义的

此选项允许使用自定义全局拆卸模块,该模块导出一个在所有测试套件之后触发一次的异步函数。这个函数得到了jest的<代码>GlobalConfig对象作为参数。

注意:在一个项目中配置的全局拆卸模块(使用多项目运行器)只有当您从这个项目中运行至少一个测试时才会被触发。

注:关于转换的同样警告<代码>node_modules.至于<代码>全局etup.适用于<代码>globalTeardown

匆忙[目的]<一个班级="hash-link" href="#haste-object" title="#">#

默认:<代码>未定义的

这将用于配置行为<代码>jest-haste-map, Jest的内部文件爬虫/缓存系统。支持以下选项:

类型 Hasteconfig. =
/ **是否使用SHA-1散列文件。*/
computha1. 布尔
/ **使用作为默认的平台,例如'ios'。*/
defaultPlatform 字符串 | 空值
/ **强制使用节点的`fs` apis而不是炮击到`* /
forcenodefilesystemapi. 布尔
/ **
*爬行文件时是否遵循符号链接。
*此选项不能用于使用Watchman的项目。
*如果此选项设置为true,则使用`watchman`的项目设置为true将会错误。
*/
everyMymlinks. 布尔
/**一个自定义的急速实现路径。*/
hasteimplmodulepath. 字符串
/**所有目标平台,例如['ios', 'android']。*/
平台 大批 < 字符串 >
/ **是否抛出模块碰撞错误。*/
掷损失 布尔
/ **自定义Hastemap模块* /
Hastemapmodulepath. 字符串

inject globals.[布尔]<一个班级="hash-link" href="#injectglobals-boolean" title="#">#

默认:<代码>真的

插入jest的全局(<代码>预计,<代码>测试,<代码>描述,<代码>beforeEach等等)进入全球环境。如果你把这个设为<代码>错误的,你应该导入<代码>@jest /全局,如。

进口 预计 开玩笑 测试 '@ jest / globals'
开玩笑 useFakeTimers
测试 一些测试的 =>
预计 日期 现在 成为 0

注意:仅使用默认值支持此选项<代码>jest-circus.测试赛跑者

MaxConcurrency.[数字]<一个班级="hash-link" href="#maxconcurrency-number" title="#">#

默认:<代码>5

限制使用时允许在使用时运行的测试数量的数字<代码>test.concurrent.。.超过此限制的任何测试将排队并执行一次插槽。

MaxWorkers.[编号|细绳]<一个班级="hash-link" href="#maxworkers-number--string" title="#">#

指定工作池将用于运行测试的最大工人数。在单个运行模式下,默认为主线程的机器上可用的核心数量。在Watch模式中,这默认为机器上的一半可用核心,以确保Jest无法引起的并且不会将您的机器磨损到停止。在像CIS这样的资源有限环境中调整它可能是有用的,但默认值应该适用于大多数使用情况。

对于可用可变CPU的环境,您可以使用基于百分比的配置:<代码>“maxWorkers”:“50%”

moduleDirectories(数组<字符串>)<一个班级="hash-link" href="#moduledirectories-arraystring" title="#">#

默认:<代码>[" node_modules "]

要从需求模块的位置递归地搜索一系列目录名称。设置此选项将覆盖默认情况下,如果您愿意搜索<代码>node_modules.包装包含它以及任何其他选项:<代码>[“node_modules”,“bower_components”]

moduleFileExtensions(数组<字符串>)<一个班级="hash-link" href="#modulefileextensions-arraystring" title="#">#

默认:<代码>["js", "jsx", "ts", "tsx", "json", "node"]

文件扩展阵列您的模块使用。如果您需要模块而不指定文件扩展,则这些是Jest将在左右订单中查找的扩展名。

我们建议把你项目中最常用的扩展放在左边,所以如果你正在使用TypeScript,你可以考虑把"ts"和/或"tsx"移到数组的开头。

modulenamemapper.[object, >]<一个班级="hash-link" href="#modulenamemapper-objectstring-string--arraystring" title="#">#

默认:<代码>空值

从正则表达式到模块名或模块名数组的映射,允许将资源(如图像或样式)存根到单个模块。

映射到别名的模块在默认情况下是未嘲弄的,无论是否启用了自动封装。

用<代码>要引用的字符串标记<一个href="#rootdir-string">rootdir.如果要使用文件路径,则值。

此外,还可以使用编号后向引用替换捕获的regex组。

例子:

“modulenamapper”
“^图像![A-ZA-Z0-9 $ _-] + $” “globalimagestub”
" ^[。/ a-zA-Z0-9 $ _ -) + \ \ . png $” /relativeImagestub.js”
“module_name_(*)。” “< rootDir > / substituted_module_ js 1.美元”
“资产/(。*)”
/图像/ $ 1”
“< rootDir > /照片/ 1美元”
/ /食谱/ 1美元”

映射的定义是事项的顺序。一个接一个地检查图案直到一个适合。最具体的规则应该首先列出。模块名称阵列也是如此。

注意:如果你提供的模块名没有边界<代码>^ $它可能会导致难以发现错误。如。<代码>中继将替换包含的所有模块<代码>中继作为其名称的子字符串:<代码>中继,<代码>react-relay和<代码>GraphQL-RELAY.都将指出你的存根。

modulepathignorepatterns.(数组<字符串>)<一个班级="hash-link" href="#modulepathignorepatterns-arraystring" title="#">#

默认:<代码>[]

匹配所有模块路径的regexp模式字符串数组将被认为对模块加载器是“可见的”。如果一个给定的模块的路径匹配任何一个模式,它就不会匹配<代码>要求()-在测试环境中。

这些模式字符串与完整路径匹配。使用<代码>字符串标记,以包含到项目根目录的路径,以防止它意外地忽略不同环境中可能有不同根目录的所有文件。例子:<代码>[“ / suppt /”]

Modulepaths.(数组<字符串>)<一个班级="hash-link" href="#modulepaths-arraystring" title="#">#

默认:<代码>[]

设置的替代API<代码>node_path.env变量,<代码>Modulepaths.是在解析模块时要搜索的其他位置的绝对路径数组。使用<代码>字符串令牌将路径包含在项目的根目录中。例子:<代码>[“ / app /「]

通知[布尔]<一个班级="hash-link" href="#notify-boolean" title="#">#

默认:<代码>错误的

激活测试结果的通知。

谨防:jest用途<一个href="https://github.com/mikaelbr/node-notifier" target="_blank" rel="noopener noreferrer">节点通知程序显示桌面通知。在Windows上,它在第一次使用时创建一个新的开始菜单条目,而不显示通知。通知将在后续运行中正确显示

NotifyMode.[细绳]<一个班级="hash-link" href="#notifymode-string" title="#">#

默认:<代码>失败改变

指定通知模式。需要<代码>通知:真实

模式<一个班级="hash-link" href="#modes" title="#">#

  • 总是:始终发送通知。
  • 失败:测试失败时发送通知。
  • 成功:测试通过时发送通知。
  • 改变:当状态更改时发送通知。
  • success-change:当测试通过或在失败时发送通知。
  • 失败改变:在测试失败时发送通知或在它通过时一次。

预设[细绳]<一个班级="hash-link" href="#preset-string" title="#">#

默认:<代码>未定义的

用作Jest配置的基础的预设。预设应指向具有A的NPM模块<代码>jest-preset.json.。,<代码>jest-preset.js,<代码>jest-preset.cjs.。或者<代码>jest-preset.mjs.。文件在根目录。

例如,这个预设<代码>Foo酒吧/jest-preset.js将配置如下:

“预设” “foo-bar”

预设也可能是相对于文件系统路径的。

“预设” ”。/ node_modules / foo bar / jest-preset.js”

prettierPath[细绳]<一个班级="hash-link" href="#prettierpath-string" title="#">#

默认:<代码>“漂亮”

设置到的路径<一个href="https://prettier.io/" target="_blank" rel="noopener noreferrer">更漂亮用于更新内联快照的节点模块。

项目[数组]<一个班级="hash-link" href="#projects-arraystring--projectconfig" title="#">#

默认:<代码>未定义的

当<代码>项目配置提供了一系列路径或直接模式,Jest将同时运行所有指定项目中的测试。这对于MONOREPOS或同时在多个项目上工作时非常棒。

“项目” “< rootDir >” / / examples / *”

此示例配置将在根目录中运行jest以及在示例目录中的每个文件夹中。您可以在同一JEST实例中拥有无限量的项目。

项目功能也可用于运行多个配置或多个配置<一个href="#runner-string">跑步者.为此,您可以传递一系列配置对象。例如,运行测试和eslint(通过<一个href="https://github.com/jest-community/jest-runner-eslint" target="_blank" rel="noopener noreferrer">jest-runner-eslint)在同一呼叫中:

“项目”
“displayName” “测试”
“displayName” “皮棉”
“跑步者” “jest-runner-eslint”
“testmatch” “< rootDir > / * * / * . js”

注意:使用多项目赛道时,建议添加一个<代码>displayName为每个项目。这将显示<代码>displayName在其测试旁边的项目。

记者[一个rray]<一个班级="hash-link" href="#reporters-arraymodulename--modulename-options" title="#">#

默认:<代码>未定义的

使用此配置选项将自定义报表添加到Jest。自定义报告器是一个实现类<代码>onrunstart.,<代码>onTestStart,<代码>onTestResult,<代码>onRunComplete方法,当任何这些事件发生时将被调用。

如果指定了自定义记录者,则将覆盖默认的JEST报告者。要保留默认记者,<代码>默认可以作为模块名称传递。

这将覆盖默认的报告程序:

“记者” /my-custom-reporter.js”

除了JEST提供的默认记录者之外,这将使用自定义报告管理员:

“记者” “默认” /my-custom-reporter.js”

此外,可以通过传递自定义报告者来配置<代码>选项对象作为第二个论点:

“记者”
“默认”
/my-custom-reporter.js” “香蕉” “是的” “菠萝” “不”

自定义Reporter模块必须定义需要a的类<代码>GlobalConfig和记者选项作为构造函数参数:

示例记者:

// my-custom-eporter.js
班级 MyCustomReporter
构造函数 GlobalConfig 选项
_globalConfig = GlobalConfig
_options = 选项
onRunComplete 背景 结果
安慰 日志 '自定义记者输出:'
安慰 日志 “GlobalConfig:” _globalConfig
安慰 日志 '选项: ' _options
模块 出口 = MyCustomReporter
//或导出默认的MyCustomReporter;

自定义记者还可以通过返回错误来强制jest退出非0代码<代码>getlasterror()方法

班级 MyCustomReporter
// ......
getLasterror.
如果 _shouldFail
返回 新的 错误 'my-custom-reporter.js报告错误'

有关方法和参数类型的完整列表<代码>记者界面<一个href="https://github.com/facebook/jest/blob/master/packages/jest-reporters/src/types.ts" target="_blank" rel="noopener noreferrer">包/ jest-eporters / src / types.ts

resetMocks[布尔]<一个班级="hash-link" href="#resetmocks-boolean" title="#">#

默认:<代码>错误的

在每个测试之前自动重置模拟状态。相当于调用<代码>开玩笑。resetAllMocks ()每次测试之前。这将导致任何删除其假实施的模型,但不会恢复其初始实施。

重置模块[布尔]<一个班级="hash-link" href="#resetmodules-boolean" title="#">#

默认:<代码>错误的

默认情况下,每个测试文件都有自己独立的模块注册表。启用<代码>重置模块更进一步地进行一步,然后在运行每个单独的测试之前重置模块注册表。为每个测试隔离模块是有用的,因此本地模块状态在测试之间不会发生冲突。这可以以编程方式使用<一个href="//www.ieatrice.com/docs/jest-object">jest.resetmodules()

解析器[细绳]<一个班级="hash-link" href="#resolver-string" title="#">#

默认:<代码>未定义的

此选项允许使用自定义解析器。该解析器必须是一个节点模块,该节点模块导出期望字符串作为路径的第一个参数,以及作为第二个参数的下列结构的对象的第一个参数:

“basedir” 字符串
“defaultResolver” “功能”(请求,选项)
“扩展” 字符串
“moduleDirectory” 字符串
“路径” 字符串
“packetfilter” “功能(PKG,PKGDIR)”
“rootDir” 字符串

如果无法找到模块,该函数应返回应解析的模块的路径。

注意:作为选项传递的DefaulTresolver是当您编写自定义一个时可能有用的Jest默认解析器。它与您的自定义相同的参数,例如,<代码>(请求,选项)

例如,如果要尊重Browserify<一个href="https://github.com/browserify/browserify-handbook/blob/master/readme.markdown" target="_blank" rel="noopener noreferrer">“浏览器”场地,您可以使用以下配置:

...
“开玩笑”
“解析器” /resolver.js”
// resolver.js.
常量 浏览浏览 = 需要 '浏览器 - 解析'
模块 出口 = 浏览浏览 同步

通过结合<代码>defaultResolver和<代码>packageFilter我们可以实施一个<代码>package.json“预处理器”允许我们更改默认解析器的方式如何解析模块。例如,想象我们想要使用该字段<代码>“模块”如果存在,否则回退<代码>“主要的”

...
“开玩笑”
“解析器” “我的模块 - 解析”
//我的模块 - 解析包
模块 出口 = 要求 选项 =>
//调用defaultResolver,因此我们利用其缓存,错误处理等。
返回 选项 defaultResolver 要求
... 选项
//在分辨率之前使用packagefilter处理解析的`package.json`(参见https://www.npmjs.com/package/resolve#resolveid-opts-cb)
packageFilter PKG. =>
返回
... PKG.
//在解析包之前改变main的值
主要的 PKG. 模块 || PKG. 主要的

restoreMocks[布尔]<一个班级="hash-link" href="#restoremocks-boolean" title="#">#

默认:<代码>错误的

在每次测试前自动恢复模拟状态。相当于调用<代码>开玩笑。restoreAllMocks ()每次测试之前。这将导致任何具有其假实施的模型删除并恢复其初始实施。

rootdir.[细绳]<一个班级="hash-link" href="#rootdir-string" title="#">#

默认值:包含您的Jest的目录的根目录<一个href="#">配置文件或者的<代码>package.json或者的<一个href="https://en.wikipedia.org/wiki/Pwd" target="_blank" rel="noopener noreferrer">松材线虫病如果不<代码>package.json被发现

Jest应该扫描其中的测试和模块的根目录。如果你把Jest配置放到<代码>package.json并希望根目录成为repo的根目录,此配置Param的值将默认为该目录<代码>package.json

通常,您会希望将其设置为<代码>'src'或者<代码>“自由”,对应于存储库中的位置存储代码。

注意使用<代码>''作为任何其他基于路径的配置中的字符串标记,设置将返回此值。例如,如果你想要<一个href="#setupfiles-array">setupfiles.配置项指向<代码>env-setup.js.。文件,您可以将其值设置为<代码>[“ /env-setup.js”]

(数组<字符串>)<一个班级="hash-link" href="#roots-arraystring" title="#">#

默认:<代码>[“”]

Jest应该用于搜索文件的目录的路径列表。

有时只希望Jest在单个子目录中搜索(例如您拥有的案例<代码>src /您的回购中的目录),但防止它访问其余的回购。

注意:虽然<代码>rootdir.主要用作在其他配置选项中重用的令牌,<代码>根开玩笑的内部用于定位测试文件和源文件.从中搜索模块的手动模拟时也适用<代码>node_modules.(<代码>__mocks__需要住在其中一个<代码>根).

注意:默认情况下,<代码>根只有一个条目<代码>但在某些情况下,您可能希望在一个项目中拥有多个根<代码>根源:[“ / src /”,“ / / tests /”]

赛跑者[细绳]<一个班级="hash-link" href="#runner-string" title="#">#

默认:<代码>“jest-runner”

此选项允许您使用自定义Runner而不是Jest的默认测试Runner。跑步者的例子包括:

注意:<代码>赛跑者属性值可以省略<代码>开玩笑-赛跑者-包名称的前缀。

要编写一个测试跑步者,导出一个接受的类<代码>GlobalConfig在构造函数中,有一个<代码>runtests.签名方式:

异步 runtests.
测试 大批 < 测试 >
观察家 testwatcher.
onstart. onteststart.
竞标 ontestsuccess.
onfailure. OnTestFailure
选项 testRunnerOptions.
承诺 < 空白 >

如果您需要限制您的测试运行程序只能串行运行而不是并行执行,那么您的类应该具有该属性<代码>Iserial.被设定为<代码>真的

setupfiles.(数组)<一个班级="hash-link" href="#setupfiles-array" title="#">#

默认:<代码>[]

运行某些代码配置或设置测试环境的模块的路径列表。每个Setupfile将每次测试文件运行一次。由于每次测试都在自己的环境中运行,因此在执行测试代码本身之前将在测试环境中执行这些脚本。

同样值得注意的是<代码>设置文件s.将执行setupfilessafterenv.

setupfilessafterenv.(数组)<一个班级="hash-link" href="#setupfilesafterenv-array" title="#">#

默认:<代码>[]

在执行套件中的每个测试文件之前,运行某些代码的模块的路径列表,以便在套件中的每个测试文件之前进行配置或设置测试框架。自从<一个href="#setupfiles-array">setupfiles.该脚本文件在测试框架安装到环境中之前执行,它为您提供了在测试框架安装到环境中之后立即运行某些代码的机会。

如果你想要一个路径<一个href="#rootdir-string">相对于项目的根目录,请包括<代码>在路径的字符串内,就像<代码>“< rootDir > / a-configs-folder”

例如,Jest附带了几个插件<代码>茉莉花通过猴子修补茉莉花API的工作。如果您想为混音添加更多​​的茉莉插件(或者如果您想要一些自定义,项目范围的匹配),则可以在这些模块中执行此操作。

笔记:<代码>设置测试frameworkscriptfile.不推荐使用<代码>设置文件ssafterenv.

例子<代码>设置文件ssafterenv.jest.config.js.中的数组:

模块 出口 =
setupfilessafterenv. './jest.setup.js'

例子<代码>jest.setup.js.。文件

开玩笑 索取 10000 / /以毫秒为单位

慢率慢[数字]<一个班级="hash-link" href="#slowtestthreshold-number" title="#">#

默认:<代码>5

测试被认为是慢性的秒数,并且在结果中报告。

snapshotResolver[细绳]<一个班级="hash-link" href="#snapshotresolver-string" title="#">#

默认:<代码>未定义的

可以解析测试< - >快照路径的模块的路径。此配置选项允许您自定义Jest在磁盘上存储快照文件的位置。

快照解析器模块示例:

模块 出口 =
//解析从测试到快照的路径
deathersnapshotpath. testPath SnapshoteXtension. =>
testPath 代替 “__tests__” “__snapshots__” + SnapshoteXtension.
//从快照解析为测试路径
resolvetestpath. SnapshotFilePath. SnapshoteXtension. =>
SnapshotFilePath.
代替 “__snapshots__” “__tests__”
0 - SnapshoteXtension. 长度
//示例测试路径,用于预检一致性检查上面的实现
testpath forconsistencycheck. '有些/ __测试__ / example.test.js'

snapshotSerializers(数组<字符串>)<一个班级="hash-link" href="#snapshotserializers-arraystring" title="#">#

默认:<代码>[]

Jest应该用于快照测试的快照序列化器模块的路径列表。

Jest为内置JavaScript类型,HTML元素(Jest 20.0.0+),ImmutableJS(Jest 20.0.0+)和React元素的默认序列化器。看<一个href="//www.ieatrice.com/docs/tutorial-react-native">快照测试教程为更多的信息。

示例序列化器模块:

/ / my-serializer-module
模块 出口 =
序列化 瓦尔 配置 缩进 深度 参考文献 打印机
返回 '漂亮foo:' + 打印机 瓦尔 Foo
测试 瓦尔
返回 瓦尔 && 瓦尔 hasownproperty. “foo”

打印机是一个使用现有插件序列化值的函数。

使用<代码>My-serializer-module作为序列化器,配置如下:

...
“开玩笑”
“snapshotserializers” “my-serializer-module”

最后测试看起来如下:

测试 =>
常量 酒吧 =
Foo
x 1
y 2
预计 酒吧 toMatchSnapshot

呈现快照:

漂亮foo 对象
“X” 1
“y” 2

要使依赖性显式而不是隐式,可以调用<一个href="//www.ieatrice.com/docs/expect">期望.Addsnapshotserializer为单个测试文件添加模块,而不是添加其路径<代码>snapshotSerializers在Jest配置中。

可以找到更多关于Serializers API的信息<一个href="https://github.com/facebook/jest/tree/master/packages/pretty-format/README.md" target="_blank" rel="noopener noreferrer">在这里

测试环境[细绳]<一个班级="hash-link" href="#testenvironment-string" title="#">#

默认:<代码>“节点”

用于测试的测试环境。Jest中的默认环境是Node.js环境。如果你正在构建一个web应用程序,你可以通过使用一个类似浏览器的环境<一个href="https://github.com/jsdom/jsdom" target="_blank" rel="noopener noreferrer">jsdom.反而。

通过添加A.<代码>@ jest-envionment在文件顶部的Docblock中,你可以为该文件中的所有测试指定另一个环境:

/ **
* @ jest-environment jsdom
*/
测试 在这个测试文件中使用jsdom =>
常量 元素 = 文档 createElement “div”
预计 元素 Tobenull.

您可以创建自己的模块,该模块将用于设置测试环境。该模块必须导出一个类<代码>设置,<代码>拆卸和<代码>getvmcontext.方法。您还可以通过将此模块将变量传递给测试套件<代码>这个对象 - 这将使它们作为全局变量的测试套件可用。

这个类可以选择公开一个异步<代码>handleTestEvent绑定事件的方法<一个href="https://github.com/facebook/jest/tree/master/packages/jest-circus" target="_blank" rel="noopener noreferrer">jest-circus.一般,<代码>jest-circus测试运行程序会暂停,直到返回一个承诺<代码>handleTestEvent得到满足,除了下一个事件:<代码>start_describe_definition.。,<代码>finish_describe_definition.。,<代码>一个dd_hook.,<代码>一个dd_test或者<代码>错误(对于您可以查看的最新列表<一个href="https://github.com/facebook/jest/tree/master/packages/jest-types/src/Circus.ts" target="_blank" rel="noopener noreferrer">Syncevent类型在类型定义中).这是由于向后兼容的原因而造成的<代码>过程。on('unhandledlextre',回调)签名,但这通常不应该是大多数用例的问题。

测试文件中的任何docblock pragmas都将被传递给环境构造器,并且可以用于每个测试配置。如果pragma没有值,它将出现在对象中,并将其值设置为空字符串。如果pragma不存在,它就不会出现在对象中。

要使用该类作为您的自定义环境,请通过它在项目中的完整路径引用它。例如,如果类存储在<代码>My-Custom-Environment.js在项目的某个子文件夹中,注释可能是这样的:

/ **
* @jest-environment。/ src /测试/ my-custom-environment
*/

注意:TestEnvironment是沙箱化的。每个测试套件都将在它们自己的TestEnvironment中触发设置/拆卸。

例子:

/ / my-custom-environment
常量 点亮 = 需要 'jest-envionion-node'
班级 海度环境 延伸 点亮
构造函数 配置 语境
极好的 配置 语境
testPath = 语境 testPath
docblockpragmas. = 语境 docblockpragmas.
异步 设置
等待 极好的 设置
等待 someSetupTasks testPath
全球的 一些globalobject. = createGlobalObject
//将触发DocBlock包含@ My-Custom-Pragma My-Pragma-Value
如果 docblockpragmas. “my-custom-pragma” ===. “my-pragma-value”
// ......
异步 拆卸
全球的 一些globalobject. = destroyGlobalobject.
等待 someTeardownTasks
等待 极好的 拆卸
getvmcontext.
返回 极好的 getvmcontext.
异步 handleTestEvent 事件 状态
如果 事件 的名字 ===. 'test_start'
// ......
模块 出口 = 海度环境
//我的测试套件
/ **
* @jest-environment。/ my-custom-environment
*/
一些globalobject.
beforeAll =>
一些globalobject. = 全球的 一些globalobject.

testenvironmentOptions.[目的]<一个班级="hash-link" href="#testenvironmentoptions-object" title="#">#

默认:<代码>{}

测试环境选项,将传递给<代码>测试环境.相关的选项取决于环境。例如,您可以重写给定的选项<一个href="https://github.com/jsdom/jsdom" target="_blank" rel="noopener noreferrer">jsdom.如<代码>{userAgent:“代理/ 007”}

testFailureExitCode[数字]<一个班级="hash-link" href="#testfailureexitcode-number" title="#">#

默认:<代码>1

退出代码对测试失败返回。

注意:这不会在Jest错误的情况下更改退出代码(例如,配置无效)。

testMatch(数组<字符串>)<一个班级="hash-link" href="#testmatch-arraystring" title="#">#

(默认值:<代码>[** / __测试__ / ** / *。s?(x)“,”** /?(*。)+(spec |测试)。[jt] s?(x)“]

Glob模式Jest用于检测测试文件。默认情况下,它查找<代码>。js.,<代码>。jsx.,<代码>。ts和<代码>。tsx文件里面的文件<代码>__tests__文件夹,以及带有后缀的任何文件<代码>测试或者<代码>。spec.(例如。<代码>component.test.js.或者<代码>Component.spec.js).它还将找到调用的文件<代码>。js或者<代码>spec.js.。

看到<一个href="https://github.com/micromatch/micromatch" target="_blank" rel="noopener noreferrer">micromatch.包有关您可以指定的模式的详细信息。

也可以看看<一个href="#testregex-string--arraystring">testregex.[字符串|数组],但请注意不能同时指定两个选项。

注意:每个Glob模式按配置顺序应用它们。(例如<代码>[“!** / __夹具__ / **”,“** / __测试__ / ** / *。js”]不会排除<代码>__fixtures__因为否定被第二种模式覆盖了。为了让这个带有否定的glob在这个例子中工作,它必须放在后面<代码>* * / __tests__ / * * / * . js.)

testpathignorepatterns.(数组<字符串>)<一个班级="hash-link" href="#testpathignorepatterns-arraystring" title="#">#

默认:<代码>[“/ node_modules /”]

一个regexp模式字符串数组,在执行测试之前匹配所有测试路径。如果测试路径与任何模式匹配,它将被跳过。

这些模式字符串与完整路径匹配。使用<代码>字符串标记,以包含到项目根目录的路径,以防止它意外地忽略不同环境中可能有不同根目录的所有文件。例子:<代码>[" < rootDir > /构建/”,“< rootDir > / node_modules /”)

testregex.[字符串|数组]<一个班级="hash-link" href="#testregex-string--arraystring" title="#">#

默认:<代码>(/__tests__/.* :( \\.ie/) (test | spec))\\.[jt]sx ??

Jest用于检测测试文件的模式。默认情况下,它查找<代码>。js.,<代码>。jsx.,<代码>。ts和<代码>。tsx文件里面的文件<代码>__tests__文件夹,以及带有后缀的任何文件<代码>测试或者<代码>。spec.(例如。<代码>component.test.js.或者<代码>Component.spec.js).它还将找到调用的文件<代码>。js或者<代码>spec.js.。.也可以看看<一个href="#testmatch-arraystring">testMatch(数组<字符串>),但请注意不能同时指定两个选项。

以下是默认正则表达式的可视化:

├──__tests__
│└──component.spec.js. #测试
│└──任何东西 #测试
├──包 #不测试
├──肃 #测试
├──bar.spec.jsx #测试
└──Component.js. #不测试

笔记:<代码>测试regex.将尝试使用该文件检测测试文件绝对的文件路径因此,拥有一个包含匹配的文件夹,它将将所有文件作为测试运行

testResultsProcessor[细绳]<一个班级="hash-link" href="#testresultsprocessor-string" title="#">#

默认:<代码>未定义的

此选项允许使用自定义结果处理器。此处理器必须是导出函数的节点模块,该函数期望具有以下结构的对象作为第一个参数并返回它:

“成功” 布尔
“开始时间” 时代
“numTotalTestSuites” 数量
“numpassedtestsuites” 数量
“numfailedtestsuites” 数量
“numRuntimeErrorTestSuites” 数量
“numtottests” 数量
“numPassedTests” 数量
“numfailedtests” 数量
“numpendingtests” 数量
“numTodoTests” 数量
“OpenHandles” 数组
“测试结果”
“numfailingtests” 数量
“numPassingTests” 数量
“numpendingtests” 数量
“测试结果”
“标题” 字符串(消息块)
“地位” “失败的” | “待办的” | “通过”
“祖先” 字符串(描述块中的消息)
“收到故障术” 字符串
“numpassingasserts” 数量
“位置”
“柱子” 数量
“线” 数量
...
“perfstats”
“开始” 时代
“结尾” 时代
“testFilePath” 测试文件的绝对路径
“报道”
...

testRunner[细绳]<一个班级="hash-link" href="#testrunner-string" title="#">#

默认:<代码>笑话-Circus / Runner

此选项允许使用自定义测试运行程序。默认值是<代码>jest-circus.可以通过指定测试运行器实现的路径来提供自定义测试转发器。

Test Runner模块必须使用以下签名导出函数:

功能 testRunner
GlobalConfig GlobalConfig
配置 ProjectConfig.
环境 环境
运行 运行时
testPath 字符串
承诺 < 测试结果 >

在我们的默认情况下可以找到此类功能的示例<一个href="https://github.com/facebook/jest/blob/master/packages/jest-jasmine2/src/index.ts" target="_blank" rel="noopener noreferrer">Jasmine2测试运行程序包

testsequencer.[细绳]<一个班级="hash-link" href="#testsequencer-string" title="#">#

默认:<代码>@ jest / test-sequencer

此选项允许您使用自定义序列,而不是Jest的默认序列。<代码>种类可能有选择地返回一个Promise。

例子:

按字母顺序排序测试路径。

// testsequencer.js.
常量 序列序列 = 需要 “@jest / test-sequencer” 默认
班级 custom sequencer. 延伸 序列序列
种类 测试
//测试结构信息
/ / https://github.com/facebook/jest/blob/6b8b1404a1d9254e7d5d90a8934087a9c9899dab/packages/jest-runner/src/types.ts L17-L21
常量 CopyTests. = 大批 测试
返回 CopyTests. 种类 testa. => testa. 小路 > 小路 1 - 1
模块 出口 = custom sequencer.

在您的JEST配置文件中使用它:

“testSequencer” “path / to / testsequencer.js”

测试时间[数字]<一个班级="hash-link" href="#testtimeout-number" title="#">#

默认:<代码>5000

以毫秒为单位测试的默认超时。

testURL[细绳]<一个班级="hash-link" href="#testurl-string" title="#">#

默认:<代码>http:// localhost

此选项设置jsdom环境的URL。它反映在诸如<代码>location.href.。

定时器[细绳]<一个班级="hash-link" href="#timers-string" title="#">#

默认:<代码>真实的

将此值设置为<代码>假的或者<代码>现代默认情况下,所有测试都可以为所有测试提供假时计时器。当一段代码设置长超时时,假时计时器很有用,我们不希望在测试中等待。您可以了解有关假计时器的更多信息<一个href="//www.ieatrice.com/docs/jest-object">在这里

如果值是<代码>遗产,旧的实现将被用作实现而不是一个支持的实施<一个href="https://github.com/sinonjs/fake-timers" target="_blank" rel="noopener noreferrer">@ sinonjs /假时

转换[对象]<一个班级="hash-link" href="#transform-objectstring-pathtotransformer--pathtotransformer-object" title="#">#

默认:<代码>\ \{”。(jt) sx吗?$ ": " babel-jest "}

从正则表达式到转换器路径的地图。变压器是一个模块,为转换源文件提供同步功能。例如,如果您希望能够在Node尚未支持的模块或测试中使用新的语言功能,则可能会插入许多编译器中的一个编译器中的一个,该编译器将来版本的JavaScript到当前。示例:看看<一个href="https://github.com/facebook/jest/blob/master/examples/typescript/package.json" target="_blank" rel="noopener noreferrer">例子/打印稿示例或者<一个href="//www.ieatrice.com/docs/webpack">网客教程

这类编译器的例子包括:

您可以将配置传递给类似于<代码>{文件pattern:['路径到变换器',{options}]}例如,要为非默认行为配置babel-jest,<代码>{“\\。js $”:['babel-jest',{rootmode:“向上”}“}

注意:除非文件发生了变化,否则转换器只能在每个文件中运行一次。在开发转换器期间,使用它运行Jest是很有用的<代码>——no - cache频繁<一个href="//www.ieatrice.com/docs/troubleshooting">删除jest的缓存

注意:添加其他代码变压器时,这将覆盖默认配置和<代码>b一个bel-jest不再自动加载。如果要使用它来编译JavaScript或TypeScript,则必须通过添加来明确定义<代码>\ \{”。(jt) sx吗?$ ": " babel-jest "}转换属性。看<一个href="https://github.com/facebook/jest/tree/master/packages/babel-jest" target="_blank" rel="noopener noreferrer">Babel-jest插件

转换器必须是一个至少具有<代码>过程函数,还建议包含一个<代码>getcachekey.功能。如果您的变形式器在ESM中编写,则应使用该对象默认导出。

如果测试是用<一个href="//www.ieatrice.com/docs/ecmascript-modules">原生ESM变压器可以导出<代码>processAsync.。和<代码>getCacheKeyAsync而是除了同步变体之外。

transformIgnorePatterns(数组<字符串>)<一个班级="hash-link" href="#transformignorepatterns-arraystring" title="#">#

默认:<代码>[" / node_modules”、“\ \ .pnp \\.[^\\\/]+$"]

在转换之前与所有源文件路径匹配的一系列Regexp模式字符串。如果文件路径与任何模式匹配,则不会转换。

这些模式字符串与完整路径匹配。使用<代码>字符串标记,以包含到项目根目录的路径,以防止它意外地忽略不同环境中可能有不同根目录的所有文件。

例子:<代码>[“ / bower_components /”,“ / node_modules /”]]

有时它会发生(尤其是反应本机或打字项目),第三方模块被公布为未经批读。因为里面的所有文件<代码>node_modules.如果没有进行默认转换,则Jest将无法理解这些模块中的代码,从而导致语法错误。为了克服这一点,你可以使用<代码>transformIgnorePatterns允许编译这样的模块。中有一个很好的用例示例<一个href="//www.ieatrice.com/docs/tutorial-react-native">反应母语指南

unmokedmodulepathpatterns.(数组<字符串>)<一个班级="hash-link" href="#unmockedmodulepathpatterns-arraystring" title="#">#

默认:<代码>[]

在模块加载器之前匹配所有模块的regexp模式字符串数组将自动为它们返回一个mock。如果一个模块的路径匹配此列表中的任何一个模式,它将不会被模块加载器自动模拟。

这是有用的一些常用的'实用'模块,几乎总是作为实现细节几乎所有时间(如下划线/lo-dash等)。通常最好的做法是保持列表尽可能小,并始终使用显式<代码>开玩笑。嘲笑()/<代码>开玩笑。unmock()个人测试呼叫。对于测试将在测试中运行的环境的原因,明确的每次测试设置远远较容易。

通过显式调用,可以在各个测试中覆盖此设置<代码>开玩笑。嘲笑()在测试文件的顶部。

verb[布尔]<一个班级="hash-link" href="#verbose-boolean" title="#">#

默认:<代码>错误的

指示是否应在运行期间报告每个单独的测试。执行后,所有错误仍将显示在底部后底部。请注意,如果只运行一个测试文件,它将默认<代码>真的

WatchpathignorePatterns.(数组<字符串>)<一个班级="hash-link" href="#watchpathignorepatterns-arraystring" title="#">#

默认:<代码>[]

在监视模式下重新运行测试之前,对所有源文件路径进行匹配的RegExp模式数组。如果文件路径与任何模式匹配,则更新时将不会触发重新运行测试。

这些模式与完整路径匹配。使用<代码>字符串标记,以包含到项目根目录的路径,以防止它意外地忽略不同环境中可能有不同根目录的所有文件。例子:<代码>[" < rootDir > / node_modules /”)

即使这里没有指定任何东西,监视器也会忽略对任何隐藏文件和目录的更改,即以点(<代码>.).

守望者[数组]<一个班级="hash-link" href="#watchplugins-arraystring--string-object" title="#">#

默认:<代码>[]

此选项允许您使用自定义手表插件。阅读更多关于Watch插件的更多信息<一个href="//www.ieatrice.com/docs/watch-plugins">在这里

手表插件的示例包括:

注意:值中的值<代码>守望者属性值可以省略<代码>jest-watch-包名称的前缀。

守望者[布尔]<一个班级="hash-link" href="#watchman-boolean" title="#">#

默认:<代码>真的

是否使用<一个href="https://facebook.github.io/watchman/" target="_blank" rel="noopener noreferrer">守望者用于文件爬行。

//[细绳]<一个班级="hash-link" href="#-string" title="#">#

没有默认的

此选项允许注释<代码>package.json.将注释文本作为该键的值包含在<代码>package.json

例子:

“名称” “我的项目”
“开玩笑”
“/ /” “评论走到这里”
“verbose” 真的