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

Вирішенняпроблем

哦,哦,出了什么问题?使用本指南以解决Jest的问题。

тестипадаштьвинезнаштечому

СпробуйтевикористатидебагПідтримкувбудованув节点。注意:这将仅在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。

将显示Chrome开发者工具,并在Jest CLI脚本的第一行设置断点(这样做是为了给你时间打开开发者工具,并防止Jest在你有时间之前执行)。点击屏幕右上角的“播放”按钮继续执行。当Jest执行包含调试器声明,执行将暂停,您可以检查当前的范围和调用堆栈。

注意:- runinband.CLI选项确保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”
“配置” [
{
“名称” “调试Jest测试”
“类型” “节点”
“要求” “发射”
“runtimeargs” [
“ - inspect-brk”
“$ {workspaceroot} /node_modules/.bin/jest”
”——runInBand”
]
“安慰” “integratedTerminal”
“internalconsoleoptions” “nelepen”
“港口” 9229.
}
]
}

Windows操作系统:

{
“版本” “0.2.0”
“配置” [
{
“名称” “调试Jest测试”
“类型” “节点”
“要求” “发射”
“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配置文件,其他选项和环境变量。保存配置,将断点放在代码中,然后单击绿色调试图标以开始调试。

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

Проблемизкешуванням

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

重试——no - cache。Jest缓存转换模块文件以加速测试执行。如果您使用的是您自己的自定义变压器,请考虑添加agetcachekey.功能:getcachekey在继电器中

未解决的承诺

如果承诺根本无法解决,则可能会抛出此错误:

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

最常见的是,这是由冲突的承诺实现引起的。例如,考虑用自己的方式取代全球承诺实现Global.Promise = Jest.RequireAction('承诺');和/或将使用的88个库巩固到一个单个。

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

笑话 索取 10000 ; // 10秒超时

守望者问题

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

Такождив。ВиправленняНеполадокPatchman.

Docker和/或连续集成(CI)服务器上的测试非常慢。

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

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

为此,您可以使用相同的线程运行测试- runinband.

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

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

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

coveragePathIgnorePatterns似乎没有任何影响。

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

定义测试

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

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

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

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

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

Всещеневирішені吗?

Дивітьсявдопомозі.