跳转到主要内容
版本:下一个

Solucion德能预防

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

Los测试están fallando y no sabes por qué#

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

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

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

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

要调试谷歌Chrome(或任何基于chromium的浏览器),打开你的浏览器并转到chrome: / /检查然后点击“Open Dedicated DevTools for Node”,它会给你一个可以连接到的可用节点实例列表。点击终端上显示的地址(通常是这样的localhost: 9229)运行上述命令后,您将能够使用Chrome的DevTools调试Jest。

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

注意:——runInBandcli选项确保Jest在同一个进程中运行测试,而不是为单个测试生成进程。正常情况下,我们可以通过测试través的进程,根据difícil的时间来进行更多的进程。

Debuggeando en Código VS#

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

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

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

Luego adiera el debugger de VS Code utility do la siguente configuración delaunch.json:

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

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

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

o la siguiente para window:

{
“版本” : “0.2.0” ,
“配置” : (
{
“名称” : “调试Jest测试” ,
“类型” : “节点” ,
“请求” : “启动” ,
“runtimeArgs” : (
”——inspect-brk” ,
" $ {workspaceRoot} / node_modules /开玩笑/ bin / jest.js” ,
”——runInBand”
] ,
“控制台” : “integratedTerminal” ,
“internalConsoleOptions” : “neverOpen” ,
“端口” : 9229
}
]
}

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

{
“版本” : “0.2.0” ,
“配置” : (
{
“名称” : “调试CRA测试” ,
“类型” : “节点” ,
“请求” : “启动” ,
“runtimeExecutable” : " $ {workspaceRoot} / node_modules。bin / react-scripts” ,
“参数” : ( “测试” , ”——runInBand” , ”——no - cache” , ”- - - env = jsdom” ] ,
“鹿” : " $ {workspaceRoot} " ,
“协议” : “检查员” ,
“控制台” : “integratedTerminal” ,
“internalConsoleOptions” : “neverOpen”
}
]
}

可以进入más información sobre depuración节点aqui.

Debuggeando con WebStorm#

La manera más fácil de debuggear las pruebas de Jest conWebStormes使用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嘲笑的人。

其它缓存#

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

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

Promesas没有resueltas#

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

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

Comúnmente eso está解决冲突的方法。例如,考虑用您自己的promise实现替换全局promise实现全球。= jest.requireActual承诺(承诺);和/或将使用的Promise库合并为一个库。

如果您的测试是长时间运行的,您可能需要考虑通过调用来增加超时jest.setTimeout

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

能预防欺诈守望#

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

也看到守望的故障排除.

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

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

基于发现,缓解此问题并将速度提高50%的一种方法是顺序运行测试。

谢谢你的盛情款待——runInBand:

#使用Jest CLI
笑话——runInBand
#使用yarn测试(例如使用create-react-app)
测试 ——runInBand

加快持续集成服务器(如Travis-CI)上测试执行时间的另一种方法是将最大工作者池设置为~4.Específicamente在旅途中,可以把时间缩短到ejecución的时间缩短到我的时间。背板:埃尔计划免费的这是一个可分配的参数código abierto sólo包括2 núcleos CPU。

#使用Jest CLI
笑话——maxWorkers = 4
#使用yarn测试(例如使用create-react-app)
测试 ——maxWorkers = 4

coveragePathIgnorePatterns似乎没有任何效果。#

确保你没有使用babel-plugin-istanbul插件。Jest包裹了伊斯坦布尔,因此也告诉了伊斯坦布尔什么文件可以用覆盖收集工具。当使用babel-plugin-istanbul, Babel处理的每个文件都有覆盖集合代码,因此它不会被忽略coveragePathIgnorePatterns.

定义测试#

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

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

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

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

注意:这意味着当你使用的时候test.each不能在一个beforeEach/beforeAll.

还有Aun罪解析器?#

版本效果.