跳到主要内容
版本:26.x.

El Objeto Jest.

笑话对象自动在每个测试文件中自动分开。这些方法笑话对象帮助创建模亚搏取款拟,让您控制Jest的整体行为。它也可以通过通孔显式导入从'@ jest / globals'导入{jest}

模块模块

JEST.DISABLEAUTOMOCK()

Deshabilita LaSimulaciónMockAutomáticaen El Cargador deMódulos。

汽车一部分配置想要查询更多的信息

Una Vez Que Se Haya EjecutadoEsteMétodo,Todas Las Lamadas A要求()Regresaránelmódulo真实(en Lugar de Unasimulación嘲笑)。

Jest配置:

{
“汽车” 真的
}

例子:

// utils.js.
出口 默认 {
授权 => {
返回 '令牌' ;
}
} ;
// __tests __ / disableautomocking.js
进口 利用者 '../utils' ;
笑话 脱言 ;
测试 '原始实施' => {
//现在我们有原始实施,
//即使我们以JEST配置设置Automocking
预计 利用者 授权 成为 '令牌' ;
} ;

Eso EsEspecialementeúttenen el caso donde las devedencias que se desean simular es modo menor a las depedencias que no se desean simular。Por Ejeallo,Si Se Escribe Un Test Para UnMóduloQue Ocupa Una Gran Cantidad de DefineCias Que SePodríanClasificarComo“Detalles de laImplientación”,es可能que no seeen simular。

Examples of dependencies that might be considered "implementation details" are things ranging from language built-ins (e.g. Array.prototype methods) to highly common utility methods (e.g. underscore/lo-dash, array utilities, etc) and entire libraries like React.js.

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

Nota:EsteMétodoSELELLAMABA Anteriormente汽车自动化。Cuando SE USABabel-Jest.,las llamadas a脱言Se LlevanAutomáticamenteAlPrincipio del BloquedeCódigo。Si Se Desea Evitar Este Comportamiento,SE Debe Usar汽车自动化

jest.enableautomock()

Habilita LaSimulaciónMockAutomáticaen En En El CargadordeMódulos。

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

汽车一部分配置想要查询更多的信息

例子:

// utils.js.
出口 默认 {
授权 => {
返回 '令牌' ;
}
isa授权 秘密 => 秘密 ===. '巫师'
} ;
// __tests __ / eNableAutomocking.js
笑话 Enableautocock. ;
进口 利用者 '../utils' ;
测试 '原始实施' => {
//现在我们有嘲弄的实施,
预计 利用者 授权 _ ismockfunction. Tobeththy. ;
预计 利用者 isa授权 _ ismockfunction. Tobeththy. ;
} ;

Nota:EsteMétodoSELELLAMABA Anteriormente自动锁定。Cuando SE USABabel-Jest.,las llamadas aEnableautocock.Se LlevanAutomáticamenteAlPrincipio del BloquedeCódigo。Si Se Desea Evitar Este Comportamiento,SE Debe Usar自动锁定

jest.createmockfrommodule(modulename)

Cambiado de Nombre en Jest26.0.0+

也在别名下:.genmockfrommodule(modulename)

墙裙埃尔农布雷迪奥斯未模,美国EL SISTEMA DE AUTOMATICO模拟模拟对generar UNA版本模拟德尔模德塞阿。

EstoEsútilCuandoSeDesea Crear UnaSimulación手册que extiende el comportamientoautomáticode lasimulación嘲笑。

例子:

// utils.js.
出口 默认 {
授权 => {
返回 '令牌' ;
}
isa授权 秘密 => 秘密 ===. '巫师'
} ;
// ___tests __ / createmockfrommodule.test.js
const 利用者 = 笑话 createmockfrommodule. '../utils' 默认 ;
利用者 isa授权 = 笑话 FN. 秘密 => 秘密 ===. '不是向导' ;
测试 '由JEST.CreateMockFrommodule创建的实现 => {
预计 利用者 授权 嘲笑 Tobeththy. ;
预计 利用者 isa授权 '不是向导' toequal. 真的 ;
} ;

这是如何createmockfrommodule.将模拟以下数据类型:

汽油

创造一个新的模拟功能。新功能没有正式参数,而叫将返回不明确的。此功能也适用于异步职能。

班级

创造一个新的课程。维护原始类的接口,所有类成员函数和属性都将被嘲笑。

objeto.

创建一个新的深切克隆对象。维护对象键,它们的值被嘲笑。

大批

创建一个新的空数组,忽略原始。

原语

创建具有与原始属性相同的基本值的新属性。

例子:

// example.js.
module.exports = {
功能:功能方形(A,B){
返回* b;
},
异步:异步函数异步(A,B){
const结果=等待a * b;
返回结果;
},
班级:新班级栏{
构造函数(){
this.array = [1,2,3];
}
foo(){}
},
目的: {
博兹:'foo',
酒吧: {
西兹:1,
嗡嗡声:[1,2,3],
},
},
阵列:[1,2,3],
号码:123,
字符串:'baz',
布尔:真实,
符号:符号。对于('a.b.c'),
};
// __tests __ / example.test.js
const 例子 = 笑话 createmockfrommodule. '。/例子' ;
测试 '应该运行示例代码' => {
//创建一个没有正式参数的新模拟函数。
预计 例子 功能 名称 toequal. '正方形' ;
预计 例子 功能 长度 toequal. 0. ;
//异步函数与标准同步函数相同的处理。
预计 例子 异步 名称 toequal. 'asyncsquare' ;
预计 例子 异步 长度 toequal. 0. ;
//创建一个具有相同界面的新类,成员函数和属性映像。
预计 例子 班级 构造函数 名称 toequal. '酒吧' ;
预计 例子 班级 Foo 名称 toequal. 'foo' ;
预计 例子 班级 大批 长度 toequal. 0. ;
//创建一个深刻的克隆版本的原始对象。
预计 例子 目的 toequal. {
Baz. 'foo'
酒吧 {
菲律 1
嗡嗡声 [ ]
}
} ;
//创建一个新的空数组,忽略原始数组。
预计 例子 大批 长度 toequal. 0. ;
//创建一个具有与原始属性相同的基本值的新属性。
预计 例子 数字 toequal. 123. ;
预计 例子 细绳 toequal. 'Baz' ;
预计 例子 布尔基 toequal. 真的 ;
预计 例子 象征 toequal. 象征 为了 'a.b.c' ;
} ;

jest.mock(moduleename,factory,选项)

Crea UnaSimulación模仿De Un Modulo Auto-icocked Cuando Es Requerido。拉斯opciones.工厂y选项儿子Opcionales。Por Ejetrevo:

// Banana.js.
模块 出口 = => '香蕉' ;
// __tests __ / test.js
笑话 嘲笑 '../香蕉' ;
const 香蕉 = 要求 '../香蕉' ; //香蕉将明确地嘲笑。
香蕉 ; //将返回“未定义”,因为该函数是自动模拟的。

El Segundo Argumento Puede Unare Para equalificar que se ejecute unafábricademódulosde manera explicita en lugar de la Funcionalidad desimulaciónmockautomáticade jest:

笑话 嘲笑 '../modulename' => {
返回 笑话 FN. => 42. ;
} ;
//这运行指定为第二个参数的函数到“jest.mock`。
const modulename. = 要求 '../modulename' ;
modulename. ; //将返回'42';

使用时工厂具有默认导出的ES6模块的参数,__esmodule:真实需要指定财产。此属性通常由Babel / TypeScript生成,但您需要手动设置。导入默认导出时,它是导入命名的属性的指令默认来自出口对象:

进口 modulename. { Foo } '../modulename' ;
笑话 嘲笑 '../modulename' => {
返回 {
__esmodule. 真的
默认 笑话 FN. => 42.
Foo 笑话 FN. => 43.
} ;
} ;
modulename. ; //将返回42
Foo ; //将返回43

El Tercer Argumento Puede Ser USADO Para Crear Simulaciones Mock Virtuales,ES DECIR,MocksdeMódulosQue No Stillen Ninguna Parte del Sistema:

笑话 嘲笑
'../modulename'
=> {
/ *
*自定义在JS中不存在的模块,
*与生成的模块或反应本机中的本机模块一样。
* /
}
{ 虚拟的 真的 }
;

警告:在设置文件中导入模块(如指定setuptestframeworkscriptfile.)将防止嘲笑有问题的模块,以及它导入的所有模块。

losmódulosque son simuladosvíajest.mock.Son Solo Simulados Para El Archivo Que Ejecutajest.mock.。即使在模块模块的测试文件之后运行,导入模块的另一个文件也会得到原始实现。

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

jest.unmock(modulename)

Le Indica Al SistemadeMódulosQue Nunca Debe Regersar UnaVersiónIMULADAMock de Un Modulo En Especifico Cuando Se ImporteVía要求()(es decir,que siempre ebe gregesar el modulo Real)。

ElUsoMásComúndeStaAPI ES Para Especificar El Modulo Que SE VA(Y Que Por Tanto No SESEA SimularAutomáticamente)。

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

jest.domock(Modulename,Factory,选项)

使用时Babel-Jest.,打电话嘲笑将自动挂起到代码块的顶部。如果要显式避免此行为,请使用此方法。

UN Ejevero Cuando Esto Es user Es Cuando Desea Simular联合国Modulo de Manera Diferente Dentro del Mismo Archivo:

摘要 => {
笑话 重置模块 ;
} ;
测试 'moduleename 1' => {
笑话 dom '../modulename' => {
返回 笑话 FN. => 1 ;
} ;
const modulename. = 要求 '../modulename' ;
预计 modulename. toequal. 1 ;
} ;
测试 'moduleename 2' => {
笑话 dom '../modulename' => {
返回 笑话 FN. => 2 ;
} ;
const modulename. = 要求 '../modulename' ;
预计 modulename. toequal. 2 ;
} ;

使用jest.domock()使用ES6进口需要额外的步骤。如果您不想使用,请按照以下操作要求在您的测试中:

  • 我们必须指定__esmodule:真实财产(见jest.mock()有关更多信息的API)。
  • 静态ES6模块导入将挂起到文件的顶部,因此我们必须使用动态地使用它们进口()
  • 最后,我们需要一个支持动态导入的环境。请参阅使用Babel.对于初始设置。然后添加插件Babel-Plugin-Dynamic-Import-node或者等效于您的Babel Config以启用Node中的动态导入。
摘要 => {
笑话 重置模块 ;
} ;
测试 'moduleename 1' => {
笑话 dom '../modulename' => {
返回 {
__esmodule. 真的
默认 'default1'
Foo 'foo1'
} ;
} ;
返回 进口 '../modulename' 然后 modulename. => {
预计 modulename. 默认 toequal. 'default1' ;
预计 modulename. Foo toequal. 'foo1' ;
} ;
} ;
测试 'moduleename 2' => {
笑话 dom '../modulename' => {
返回 {
__esmodule. 真的
默认 'default2'
Foo 'foo2'
} ;
} ;
返回 进口 '../modulename' 然后 modulename. => {
预计 modulename. 默认 toequal. 'default2' ;
预计 modulename. Foo toequal. 'foo2' ;
} ;
} ;

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

jest.dontmock(moduleename)

Cuando SE USABabel-Jest.,las llamadas a揭发Se LlevanAutomáticamenteAlPrincipio del BloquedeCódigo。如果要显式避免此行为,请使用此方法。

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

jest.setmock(moduleename,moduleexports)

Provee de Manera Especifica El Modulo Simulado Mock Que El Sistemademódulos博士·普雷斯·普瑞斯·斯特森赛克。

有时,有时间自动生成的模块模块系统通常提供您的测试需求不足以提供足够的足够足以。Normalmente,EN ESASIConstancias SE Debe Escribir UnMódulo模拟手册QueSeamásAdecuado帕拉·埃尔莫罗·恩Cuestión。y Sin Embargo,EN Raras ocasiones,包容UN Mock Manual Puede No Ser ApropiaDo Para LosPropósitosde la Prueba,en Cuyo Caso Se Tiene Cultruir El Mock Dentro de la Prueba。

en estos raros casos,se puede ocupar esta api para llenar de manera manual el regradlo delmódulomock en el sistema demódulos。

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

ES Majorte Notar Que Es Mejor Practica Ocuparjest.mock()。El Segundo Argumento del api dejest.mock.ES UNAFÁBRICAde Modulos en Lugar del Objeto del Modulo Que Se Espera Exportar。

Jest.requireAcctual(Modulename)

返回实际模块而不是模拟,绕过所有检查模块是否应接收模拟实现。

例子:

笑话 嘲笑 '../mymodule' => {
//要求原始模块不被嘲笑......
const 原始模块 = 笑话 请求 '../mymodule' ;
返回 {
__esmodule. 真的 //处理ESModules时使用它
...... 原始模块
getrandom. 笑话 FN. mockreturnvalue. 10.
} ;
} ;
const getrandom. = 要求 '../mymodule' getrandom. ;
getrandom. ; //总是返回10

jest.requeremock(modulename)

返回模块模块而不是实际模块,绕过所有检查是否应通常应检查模块是否应该是。

jest.resetmodules()

Restablece ElRegistrodoMódulos - elCachédodosLOSMódulosImportAs。EstoEsútilpara aislarmódulosdonde ostado本地Podríaintraren冲突entre pruebas。

例子:

const SUM1. = 要求 '../和' ;
笑话 重置模块 ;
const SUM2. = 要求 '../和' ;
SUM1. ===. SUM2. ;
//> false(SUM模块都是SUM模块的“实例”。)

Ejemero en Una prueba:

摘要 => {
笑话 重置模块 ;
} ;
测试 '作品' => {
const = 要求 '../和' ;
} ;
测试 '工作也是' => {
const = 要求 '../和' ;
// sum是来自上一个测试的SUM模块的不同副本。
} ;

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

Jest.isolateModules(FN)

Jest.isolateModules(FN)进一步走得更远jest.resetmodules()并为在回调函数内加载的模块创建一个沙箱注册表。这对于隔离每个测试的特定模块非常有用,以便本地模块状态在测试之间不会发生冲突。

mymodule. ;
笑话 isolatemodules. => {
mymodule. = 要求 'mymodule' ;
} ;
const 其他特异性统计学 = 要求 'mymodule' ;

模拟功能

JEST.FN(实施)

Regresa Una Nueva Instancia,Sin Utilizar,De UnaFunción嘲笑。Opcionalmente Acepta comoparámetrounamideveracióndemock。

const Mockfn. = 笑话 FN. ;
Mockfn. ;
预计 Mockfn. TohaveBeencalled. ;
//具有模拟实现:
const rethentrue. = 笑话 FN. => 真的 ;
安慰 日志 rethentrue. ; // 真的;

jest.ismockfunction(fn)

Chationina Si laFuncióndadaes UnaFunciónImulada。

jest.spyon(对象,methodname)

创建类似的模拟函数jest.fn.还要跟踪电话对象[methodname]。返回一个jest.模拟功能

nota:por defecto,jest.spyon.Tambiénllamaalmétodo独立了。Este Comportamiento Es Diferente de Casi Todas Las OtrasLibreríasAlarPruebas。Si Se Desea Remplazar LaFunción原创,SE佩德USARJEST.SPYON(对象,方法名称).mockimplingation(()=> importingAcionPropia)O.对象[methodname] = jest.fn(()=> liffileAcionpropia);

例子:

const 视频 = {
{
返回 真的 ;
}
} ;
模块 出口 = 视频 ;

Prueba de Ejegro:

const 视频 = 要求 '。/视频' ;
测试 '播放视频' => {
const 间谍 = 笑话 暗中监视 视频 '玩' ;
const 正在玩 = 视频 ;
预计 间谍 TohaveBeencalled. ;
预计 正在玩 成为 真的 ;
间谍 模仿者 ;
} ;

jest.spyon(对象,方法名称,acceptype?)

自Jest 22.1.0+以来,jest.spyon.方法采用可选的第三个论点AccessType.可以是'得到'或者'放',这在您希望分别在吸气工或Setter上间谍时有用。

例子:

const 视频 = {
//这是一个getter!
const 视频 = {
//这是一个getter!
得到 {
返回 真的 ;
}
} ;
模块 出口 = 视频 ;
const 声音的 = {
_体积 错误的
//这是一个骗局!
体积 价值 {
_体积 = 价值 ;
}
得到 体积 {
返回 _体积 ;
}
} ;
模块 出口 = 声音的 ;
体积 价值 {
_体积 = 价值 ;
}
得到 体积 {
返回 _体积 ;
}
} ;
模块 出口 = 声音的 ;

Prueba de Ejegro:

const 声音的 = 要求 '。/声音的' ;
const 视频 = 要求 '。/视频' ;
测试 '播放视频' => {
const 间谍 = 笑话 暗中监视 视频 '玩' '得到' ; //我们通过'get'
const 正在玩 = 视频 ;
预计 间谍 TohaveBeencalled. ;
预计 正在玩 成为 真的 ;
间谍 模仿者 ;
} ;
测试 '玩音频' => {
const 间谍 = 笑话 暗中监视 声音的 '体积' '放' ; //我们通过'set'
声音的 体积 = 100. ;
预计 间谍 TohaveBeencalled. ;
预计 声音的 体积 成为 100. ;
间谍 模仿者 ;
} ;

Jest.ClearAllMocks()

清除Mock.Calls.模拟所有模拟的属性。相当于呼叫.mockclear()在每个嘲弄的功能。

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

jest.resetallmocks()

重置所有模拟的状态。相当于呼叫.mockreset()在每个嘲弄的功能。

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

jest.restoreallmocks()

Restaura Todos Los Objetos Duplicados A Su Valor原创。相当于呼叫.mockrestore()在每个嘲弄的功能。小心jest.restoreallmocks()仅在创建模拟时工作jest.spyon.;其他模拟需要您手动恢复它们。

模拟时间

jest.usefaketimers(实施?:'现代'|'遗产')

指示Jest使用标准计时器功能的假版(索取setInterval.清除时间ClearInterval.nexttick.setimmediateClearimmediate日期)。

如果你通过了'遗产'作为一个论点,将使用jest的遗留实施而不是一个基于@ sinonjs /假时。这也像这样嘲笑额外的计时器日期'现代的'将是Jest 27中的默认行为。

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

jest.userealtimers()

Indea A Jest que se oben ocupar las Versiones Reales de las Funcionesestándaresde临时司津。

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。

jest.runallticks()

Agota la Cola de arteas(Cuya Interfaz en Node ESprocess.nexttick.)。

Cuando Se Llama A Este Api,Todas Las Micro-Tareas QueEsténZhoCalaCaladeprocess.nexttick.Seránejecutadas。De Manera Adicional,Si esas micro-tareas mismas crean nuevas micro-tareas,éstasse tagotaran持续的hasta que no hayamásmicro-tareas en la la la la ola。

jest.runalltimers()

竭尽全力-task队列(即,排队排队的所有任务settimout()setInterval(), 和setimmediate())和-task队列(通常通过节点界面接口process.nexttick.)。

调用此API时,将执行所有挂起的宏任务和微任务。如果这些任务本身安排新任务,那么队列中没有更多的任务将不断耗尽。

EstoEsútilejecutar settimouts de ManeraSincroníaNenUna Prueba ParaAsíVerificardeMaleraSincroníaComionesQueOcurriríanPlocuésdequese ejecuten los回调settimout()O.setInterval()。Véaseel documento desimulaciones de临时tempor temporParaMásfignación。

jest.runallimmediates()

agota todas las tareas en la cola desetimmediate()

注意:使用现代假计时器实现时,此功能不可用

Jest.AdvancetimersBytyTime(Mstorun)

Cambiado de Nombre en Jest22.0.0+

TambiénConocidoBajoEl别名:.runtrimerstotime()

ejecuta solo las tareas宏(ES DECIR TODAS AQUELLAS PROWLARADAS PORsettimout()setInterval()ysetimmediate())。

Cuando Este Api Es Llamado,Todos Los Timers Son Avanzados Por MilisegundosMstorun.。所有挂起的“宏任务”已排队通过settimout()或者setInterval(),并且将在此时间帧中执行并执行。此外,如果这些宏任务调度将在同一时间框架内执行的新宏任务,则将执行这些,直到在队列中没有更多的宏任务,应该在其中运行Mstorun.毫秒。

jest.runonlypendingTimers()

Ejecuta solo las宏 - 芋克que se Encuentren pendientes(es decir,sólolas tareas que entaron a laColaVíasettimout()O.setInterval()Hasta ESE Mommono)。Si Cualquiera de ESAS宏观酥油克·克里斯·莫瓦斯宏 - 塔乐,éstasúltimasno seejecutaránen esta llamada。

Esto Esttil Para Escenarios Donde El Modulo Probado Llama Asettimout()yéstea su vez llama asettimout()De Manera Recursiva(De Manera Que Las Llamadas Nunca Terminan)。EN Dichos Escenarios,ES Til Poder Avanzar en La Linea de Tiempo deEjecuciónun Paso A La Vez。

JEST.ADVAMACTIMERSTONEXTTIMER(步骤)

通过所需的毫秒推进所有计时器,以便仅运行下一个时刻/间隔。

可选地,您可以提供脚步,所以它会运行脚步下一个时刻/间隔的数量。

Jest.ClearAllTimers()

Remueve Cualquier临时审议者Pendiente en El Sistema de临时提升机。

Esto意义Que,Cualquier临时临时Que Haya Sido Programado(佩罗没有SE SE HA EJECUTADOAún),SeráBorradoY NoCentráLaPortunidadde Ejecutarse En Un Futuro。

jest.gettimercount()

返回仍然留下的假计时器数量。

jest.setsystemtime(现在?:编号|日期)

设置假计时器使用的当前系统时间。在程序运行时模拟用户更改系统时钟的用户。它会影响当前时间,但它本身并不导致例如。定时器到火;如果没有呼吁,他们会尽可能地发射jest.setsystemtime()

注意:此功能仅在使用现代假计时器实现时可用

jest.getRealsystemtime()

嘲笑时间,date.now()也会被嘲笑。如果由于某种原因需要访问实际时间的时间,则可以调用此功能。

注意:此功能仅在使用现代假计时器实现时可用

杂项

jest.settimeout(超时)

设置测试的默认超时时间间隔,以毫秒为单位/挂钩。这仅影响调用此函数的测试文件。

注意:如果未调用此方法,则默认超时间隔为5秒。

注意:如果要设置所有测试文件的超时,则会在此处设置一个好地方setupfilessafterenv.

例子:

笑话 索取 1000 ; // 1秒

jest.retrytimes()

运行失败的测试,直到它们通过或在最大重试次数耗尽之前。这只适用于jest-circus!!

Ejemero en Una prueba:

笑话 重试 3. ;
测试 '将失败' => {
预计 真的 成为 错误的 ;
} ;

Regresa el Objeto.笑话Para Poder Ser Usado Llamadas Consecutivas。