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

疑难解答

。

找不觉到失败的原因

尝试使用内置的调试支持。注意:这将仅在Node.js 8+中工作。注意:这将仅在Node.js 8+中工作。

在你的单一测试中加加一圈调试器;语句,然后在项目目录中间行动:

node——inspect-brk node_modules/.bin/jest——runInBand . conf [ 这里的任何其他论点 ]
或在Windows上
node --inspect-brk ./node_modules/jest/bin/jest.js --RuninBand [ 这里的任何其他论点 ]

这将在外部调试器可以连接到的节点进程中运行jest。请注意,此过程将暂停,直到调试器已连接到它。请注意,此过程将暂停,直到调试器已连接到它。

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

将显示Chrome开发人员工具,并且将在JEST CLI脚本的第一行设置断点(这是为您提供时间打开开发人员工具并防止在您有时间之前执行的时间)。。点击开发者工具中右上方调试调试单位中的“开始调试”按钮,让让继续执行。点击开发舞台工具中的上方调试调试调试栏中的“开始”按钮,让代码继续执行。当jest执行到加加了调试器;语句的单身测试时,执行会暂停,此时,你可以检查当前和使用栈。

注意:- runinband.CLI选项确保Jest在相同的过程中运行测试而不是单个测试的产卵过程。通讯下载,jest并行化会跨程程行,但很难时尚更多个程。通过常情况下,jest下,jest并行为测试跨程行行程,而且是很难时尚更多个程程。

在VS Code中调试

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

要附加内置调试器,请按照上述运行测试:

node——inspect-brk node_modules/.bin/jest——runInBand . conf [ 这里的任何其他论点 ]
或在Windows上
node --inspect-brk ./node_modules/jest/bin/jest.js --RuninBand [ 这里的任何其他论点 ]

然后使用以下附加VS代码的调试器launch.json配置:

{
“版本” “0.2.0”
“配置” [
{
“类型” “节点”
“要求” “附加”
“名称” “附”
“港口” 9229.
}
]
}

要自动启动并附加到运行测试的进程,请使用以下配置:

{
“版本” “0.2.0”
“配置” [
{
“名称” “调试exest tests”
“类型” “节点”
“要求” “发射”
“runtimeargs” [
“ - inspect-brk”
“$ {workspaceroot} /node_modules/.bin/jest”
”——runInBand”
]
“安慰” “integratedTerminal”
“internalconsoleoptions” “nelepen”
“港口” 9229.
}
]
}

Windows操作系统:

{
“版本” “0.2.0”
“配置” [
{
“名称” “调试exest tests”
“类型” “节点”
“要求” “发射”
“runtimeargs” [
“ - inspect-brk”
" $ {workspaceRoot} / node_modules /开玩笑/ bin / jest.js”
”——runInBand”
]
“安慰” “integratedTerminal”
“internalconsoleoptions” “nelepen”
“港口” 9229.
}
]
}

如果你正在使用FacebookCreate-React-App,您可以使用以下配置调试您的JEST测试:

{
“版本” “0.2.0”
“配置” [
{
“名称” “调试CRA测试”
“类型” “节点”
“要求” “发射”
“runtimeExecutable” " $ {workspaceRoot} / node_modules。bin / react-scripts”
“参数” [ “测试” ”——runInBand” “--no-cache” ”- - - env = jsdom” ]
“CWD” “$ {workspaceroot}”
“协议” “检查员”
“安慰” “integratedTerminal”
“internalconsoleoptions” “nelepen”
}
]
}

更多关于节点调试的信息,可以查看这里

在WebStorm中调试

调试Jest测试的最简单方法WebStorm.是使用Jest运行/调试配置。它将启动测试并自动连接调试器。它将启动测试并自动连接调试器。

在WebStorm菜单中跑步选择编辑配置...。然后点击+并选择笑话。可选地指定Jest配置文件、附加选项和环境变量。保存配置,将断点放在代码中,然后单击绿色的debug图标开始调试。然后点击+并选择笑话。可选地指定Jest配置文件、附加选项和环境变量。保存配置,将断点放在代码中,然后单击绿色的debug图标开始调试。

如果你正在使用FacebookCreate-React-App,在Jest运行/调试配置中指定路径反应脚本包在Jest包字段中并添加——env = jsdom到Jest选项字段。

缓存问题

变换脚本已更改或BABEL已更新,并且Jest无法识别更改?

尝试使用——no - cache选项。jest会缓存转换的模块文来来加起来测试的的。如果您使用的是您自己的自定义变压器,请考虑添加一个getcachekey.功能:getcachekey在继电器中

未返回的承诺

如果一个承诺并未返回任何东西(没有解决)你会看到类似于下边的报错:

- 错误:超时 - 在内部不会调用异步回调 超时 规定jasmine.DEFAULT_TIMEOUT_INTERVAL.”

通常这是由冲突的承诺实现引发的。例如,考虑用您自己的promise实现替换全局promise实现Global.Promise = Jest.RequireAction('承诺');和/或将使用的88个库巩固到一个单个。

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

笑话 索取 10000 ; //设置10次时

看门狗问题

尝试跑步Jest- 没有守望人或设置守望者配置选项错误的

更多详情,查看看门狗疑难解答

码头工人和/或持续集成(CI、持续集成)服务器中执行Jest测试极慢。

虽然Jest在现代多核计算机上具有快速SSD的大多数时间非常快,但在某些设置中可能会缓慢为我们的用户发现

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

达成上述目的,可以使用- runinband.选项:

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

加快持续集成服务器(如Travis-CI)上测试执行时间的另一种方法是将最大工作者池设置为~4.。特别是在Travis-CI上,这可以将测试执行时间减少一半。注意:Travis CI自由开放源码项目可用的plan只包含2个CPU核。特别是在Travis-CI上,这可以将测试执行时间减少一半。注意:Travis CI自由开放源码项目可用的plan只包含2个CPU核。

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

coveragePathIgnorePatterns似乎没有任何影响。

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

定义测试

必须同步定义测试,以便能够收集测试。

作为一个例子来展示为什么这是这种情况,想象一下我们写了一个如此:

//不这样做它不起作用
索取 = > {
“通过” = > 预计 1 成为 1 ;
} 0. ;

当Jest运行您的测试时收集测试s将找不到任何,因为我们已在事件循环的下一个刻度上设置定义以异步发生。

笔记:这意味着您使用时test.each.不能在一个摘要/Beforeall.

尚未解决问题?

这里查看帮助