跳转到主要内容
版本:26.倍

Solucion德能预防

哦哦,¿algo salió mal?使用guía para resolver problems con Jest。

LOS TestsEstánFallandoY No SabesPorué#

我们希望将depuración合并到节点上。注意:这只在Node.js 8+中有效。

Coloque una instruccion调试器;在我们的测试中,lugo,在我们的主管中,执行:

节点 - inspect-brk node_modules / .bin / jest --runinband ( 还有其他的论点吗 ]
或在Windows上
——inspect-brk ./node_modules/jest/bin/jest.js——runInBand ./node_modules/jest .js ( 还有其他的论点吗 ]

这将在外部调试器可以连接到的节点进程中运行Jest。请注意,该进程将暂停,直到调试器连接到它为止。

在Google Chrome(或任何基于铬的浏览器)中调试,打开浏览器并转到chrome: / /检查然后单击“为节点打开专用DevTools”,这将为您提供可以连接的可用节点实例列表。单击终端中显示的地址(通常是类似的localhost: 9229)运行上述命令后,您将能够使用Chrome的DevTools调试Jest。

将显示Chrome开发者工具,并在Jest CLI脚本的第一行设置断点(这样做是为了给你时间打开开发者工具,并防止Jest在你有时间之前执行)。我把它放在botón上,它的名字是botón,它的名字是reproducción,它的名字是pantalla和continuar的名字ejecución。这个测试是在instrucción上的调试器,LaEjecuciónsedendráyPodráIceinarelámbito实际y la pila de llamadas。

注意:——runInBandCLI选项确保Jest在相同的过程中运行测试而不是单个测试的产卵过程。Normalmente Jest Paraleliza Las Ejecuciones de Los TestsTravésdecocesos,PeroEsiutícilDepurar Modos Procesos Al Mismo Tiempo。

debuggeando encódigovs#

有多种方法可以调试Jest测试Visual Studio代码内置的调试器

如果您有任何错误,请立即执行您的命令aquí:

节点 - inspect-brk node_modules / .bin / jest --runinband ( 还有其他的论点吗 ]
或在Windows上
——inspect-brk ./node_modules/jest/bin/jest.js——runInBand ./node_modules/jest .js ( 还有其他的论点吗 ]

Luego Adiera El Debugger De VS Code Uterizando La SiguenteConfiguraciónde启动.JSON.:

{
“版本” : “0.2.0” ,
“配置” : (
{
“类型” : “节点” ,
“请求” : “附” ,
“名称” : “附加” ,
“端口” : 9229
}
]
}

Para iniciar y añadir automáticamente一个联合国的驱逐程序,使用的是siguiente instalación:

{
“版本” : “0.2.0” ,
“配置” : (
{
“名称” : “调试exest tests” ,
“类型” : “节点” ,
“请求” : “启动” ,
“runtimeArgs” : (
“ - inspect-brk” ,
" $ {workspaceRoot} / node_modules。bin /开玩笑” ,
“ - runinband”
] ,
“控制台” : “SideveTerminal” ,
“internalConsoleOptions” : “neverOpen” ,
“端口” : 9229
}
]
}

o la siguiente para window:

{
“版本” : “0.2.0” ,
“配置” : (
{
“名称” : “调试exest tests” ,
“类型” : “节点” ,
“请求” : “启动” ,
“runtimeArgs” : (
“ - inspect-brk” ,
“$ {workspaceroot} /node_modules/jest/bin/jest.js” ,
“ - runinband”
] ,
“控制台” : “SideveTerminal” ,
“internalConsoleOptions” : “neverOpen” ,
“端口” : 9229
}
]
}

Si está utility do elcreate-react-app在Facebook上,我们将举办一个关于笑话的研讨会configuración:

{
“版本” : “0.2.0” ,
“配置” : (
{
“名称” : “调试CRA测试” ,
“类型” : “节点” ,
“请求” : “启动” ,
“runtimeexecutable” : “$ {workspaceroot} /node_modules/.bin/reacect-scripts” ,
“args” : ( “测试” , “ - runinband” , ”——no - cache” , “--env = jsdom” ] ,
“鹿” : " $ {workspaceRoot} " ,
“协议” : “检查员” ,
“控制台” : “SideveTerminal” ,
“internalConsoleOptions” : “neverOpen”
}
]
}

Puede EncontrarMásfeckaciónSobredepuraciónnn节点冒充

debuggeando con webstorm#

La manera más fácil de debuggear las pruebas de Jest conWebStormES Utilizando.Jest运行/调试配置。Iniciará las pruebas y añadirá el调试器automáticamente。

En el菜单运行de WebStorm seleccione编辑配置…。Luego presione+y sleccione.开玩笑。你可以选择,特别是instalación的档案,你可以选择你的变量。守护在instalación,在código的旁托斯,在ícono的旁托斯depuración,在depuración的旁托斯。

Si está utility do elcreate-react-app去Facebook,特别是configuración ejecutar/debug de Jest la ruta hacia el paquetreact-scriptsen el campo de paquetes de Jest añada--env = jsdom.嘲笑的人。

问题decaché.#

转换脚本被更改了,或者Babel被更新了,但是Jest不能识别这些更改?

Reintente反对- nno-cache.。从módulo转换到ejecución从prueba。如果您正在使用自己的自定义转换器,请考虑添加一个getCacheKey功能:getCacheKey在继电器

Promesas没有Resueltas.#

如果没有结果,podría producirse el siguiente错误:

-错误:超时-异步回调没有在内部调用 超时 指定的茉莉花。DEFAULT_TIMEOUT_INTERVAL.”

Comúnmenteesoestásiendo ancaado por冲突en las MiffileAciones Promesa。例如,考虑用自己的方式取代全球承诺实现全球。= jest.requireActual承诺(承诺);和/或将使用的Promise库合并为一个库。

如果您的测试长期运行,您可能希望考虑通过呼叫增加超时jest.setTimeout

开玩笑 setTimeout ( 10000 ) ; // 10第二回合暂停

问题骗局#

试着运行Jest with——no-watchman或设置守望配置选项

也看到守望的故障排除

在integración continua (CI)的服务端,Los测试了在码头上的极限值。#

虽然Jest大多数时候在现代多核计算机和快速ssd上都非常快,但对于我们的用户来说,它在某些设置上可能会很慢发现

基于这一点发现,减轻此问题的一种方法,提高速度高达50%是顺序运行测试。

Para Este Fin,Puede Ejecutar Pruebas en El Mismo Hilo Usando——runInBand:

#使用Jest CLI
jest - runinband.
#使用yarn测试(例如,使用Create-React-App)
测试 ——runInBand

加速在持续集成服务器上的测试执行时间等替代方案,例如Travis-CI是将Max Worker Pool设置为〜4。Específicamenteen travis-ci,Esto Puede Reducir el Tiempo deEjecucióndupruebaa la mitad。NOTA:EL计划免费的这是一个可分配的参数código abierto sólo包括2 núcleos CPU。

#使用Jest CLI
jest --maxworkers. = 4
#使用yarn测试(例如,使用Create-React-App)
测试 ——maxWorkers = 4

coveragepatepathorepatterns.似乎没有任何效果。#

确保您没有使用Babel-Plugin-Istanbul插入。jest wraps istanbul,因此也告诉istanbul用覆盖收集来介绍一个文件。使用时Babel-Plugin-Istanbul, Babel处理的每个文件都有覆盖集合代码,因此它不会被忽略coveragepatepathorepatterns.

定义测试#

为了能够收集测试,Jest必须同步地定义测试。

作为一个例子来说明为什么会这样,假设我们这样写一个测试:

//不要这样做——它不会工作
setTimeout ( ( ) => {
( '通过' , ( ) => 预计 ( 1 ) 托比 ( 1 ) ) ;
} , 0 ) ;

当Jest运行您的测试时收集测试因为我们已经将定义设置为在事件循环的下一个周期异步发生。

注意:这意味着当你使用的时候test.each您无法在a中异步设置表beforeEach/beforeAll

还有Aun罪解析器?#

verAyuda.