Jest
Jest 是一个用于客户端 JavaScript 应用程序,尤其是 React 应用程序的测试平台。 请访问 Jest 官方网站了解该平台的更多信息。
您可以在 GoLand 中直接运行和调试使用 Jest 的测试。 您可以在树状视图中查看测试结果,并从中轻松导航到测试源代码。 测试状态会显示在编辑器中测试旁边,并提供快速运行或调试的选项。
开始之前
安装并配置 Jest
在嵌入式 终端 (Alt+F12 )中键入:
npm install --save-dev jest
运行测试
在 GoLand 中,您可以直接从编辑器快速运行单个 Jest 测试,也可以创建运行/调试配置来执行部分或全部测试。
关于为 JavaScript 和 TypeScript 代码创建 Vitest 测试的更多信息,请参阅 Vitest 官方网站上的 Vitest 功能。
从编辑器运行单个测试
单击
或
,然后从列表中选择 Run <test_name>。

借助编辑器中边栏的 测试状态 图标
和
,您也可以直接查看测试是否通过或失败。
从项目工具窗口运行文件夹中的全部测试
在 项目 工具窗口 Alt+1 中,选择包含测试的文件夹,然后选择 Run 'Tests in <folder name>'。

创建 Jest 运行配置
打开 运行/调试配置 对话框(主菜单中的 ),在左侧窗格中单击
,然后从列表中选择 Jest。 将打开 运行/调试配置:Jest 对话框。
指定要使用的 Node.js 解释器。
如果选择 项目 别名,GoLand 将自动使用 Node 解释器 字段中的项目默认解释器。 在大多数情况下,GoLand 会检测项目默认解释器,并自动填充该字段。
您还可以选择另一个已配置的本地解释器,或单击
配置新的解释器。
指定 jest、 react-scripts、 react-script-ts、 react-super-scripts 或 react-awesome-scripts 包的位置。
指定应用程序的工作目录。 默认情况下, 工作目录 字段显示项目根文件夹。 若要更改此预定义设置,请指定所需文件夹的路径。
指定要运行的测试。 可以是特定测试或套件、整个测试文件或包含测试文件的文件夹。
可选地指定要使用的 jest.config.js 或 jest.config.ts 文件:从列表中选择相关文件,或单击
并在打开的对话框中选择它,也可以直接在字段中输入路径。
如果该字段为空,GoLand 将查找包含
jest键的 package.json 文件。 搜索将在文件系统中从 工作目录 向上执行。 如果未找到合适的 package.json 文件,则会即时生成 Jest 默认配置。可选:
配置在相关源文件更改时自动重新运行测试。 为此,请在 Jest 选项 字段中添加
--watch标志。You can also turn the watch mode on later by pressing the 监视更改 toggle button in the 运行 tool window during a test session, refer to Rerun test automatically on changes (watch mode) below.
可选:
指定用于执行命令的环境变量。 GoLand 将在
process.env的自动补全列表中显示这些变量。
在 Node 选项 字段中,您可以输入要传递给 Node.js 可执行文件的 Node.js 特定命令行选项。 可接受的选项包括:
使用
--require coffeescript/register可在运行时即时将 CoffeeScript 文件编译为 JavaScript。此模式要求项目中包含
coffeescript包的一部分 register.js 文件。使用
--inspect或--inspect-brk参数以支持 Chrome 调试协议。若要在项目中使用 ECMAScript 模块 ,请在 Node 选项 字段添加
—experimental-vm-modules标志。
通过运行配置运行测试
在配置列表中选择 Jest 运行/调试配置,然后在列表中或工具栏上单击
。
在 测试运行器 选项卡的 运行 工具窗口中监视测试执行并分析测试结果。 有关更多信息,请参阅 探索测试结果。
重新运行失败的测试
单击测试结果工具栏上的
。 GoLand 将执行上一次会话中失败的所有测试。
若要重新运行某个特定失败的测试,在其上下文菜单中选择 。
有关更多信息,请参阅 重新运行测试。
在发生更改时自动重新运行测试(监视模式)
GoLand 支持 watch 模式,即每当测试相关的源文件发生更改时,将自动重新运行测试。 因此,您只需修改代码,而无需手动重新运行测试或重新启动 Jest 运行/调试配置。
在 测试运行器选项卡 中,按 监视更改 切换按钮。

或者,在运行/调试配置的 Jest 选项 字段添加
--watch标志,参见上文 创建 Jest 运行配置。
导航
使用 GoLand,您可以在文件与其相关测试文件之间,或在 测试运行器选项卡 中的测试结果与测试之间跳转。
使用 GoLand,您可以在文件与其相关测试文件之间,在测试或套件定义与其 测试运行器选项卡 中的结果之间跳转。
要在测试与其目标之间跳转,请在编辑器中打开文件,并从上下文菜单中选择 或 ,或直接按 Ctrl+Shift+T。
要从测试结果跳转至测试定义,请在 测试运行器 选项卡中双击测试名称,或从上下文菜单中选择 ,或直接按 F4。 测试文件将在编辑器中打开,光标定位在测试定义处。
要从测试或套件定义跳转至其在 测试运行器 选项卡中的结果,请单击边缘的
或
,并从列表中选择 Select <test_name> in Test Tree。

对于失败的测试,GoLand 会根据堆栈跟踪定位至测试中的失败行。 如果堆栈跟踪中未包含确切的代码行,则将跳转至测试定义。

快照测试
GoLand 对 Jest 的集成支持快照测试等强大功能。
使用 .toMatchSnapshot() 方法运行测试时,Jest 会在 __snapshots__ 文件夹中创建快照文件。 要从测试跳转到其关联的快照,请单击测试边缘的 ,或从
.toMatchSnapshot() 方法的上下文菜单中选择所需快照。

如果快照与渲染的应用程序不一致,则测试将失败。 这表明要么是代码中的某些更改导致了不一致,要么是快照已过时需更新。
要查看导致不一致的原因,请通过 点击查看差异 链接打开 GoLand 内置的 Diff Viewer ,该链接位于 测试运行器 选项卡的右侧窗格中。

您可以直接在 测试运行器 选项卡的 运行 工具窗口中更新过时快照。
要更新某个特定测试的快照,请使用测试名称旁边的 点击更新快照 链接。
要更新文件中所有测试的过时快照,请使用测试文件名旁边的 点击更新失败快照。

调试测试
借助 GoLand,您可以直接从编辑器快速调试单个 Jest 测试,或创建运行/调试配置以调试部分或全部测试。
要从编辑器调试单个测试,请单击边缘的
或
,并从列表中选择 Debug <test_name>。
要调试文件夹中的所有测试,请在 项目 工具窗口中选择该文件夹,然后从上下文菜单中选择 Debug 'Tests in <folder name>'。

要通过运行/调试配置启动测试调试,请创建一个如上所述的 Jest 运行/调试配置 as described above。
然后从配置列表中选择 Jest 运行/调试配置,并单击列表中或工具栏上的
。
在打开的 调试工具窗口 中按常规方式操作: 逐步执行程序、 停止与恢复程序执行、 在挂起时进行检查 ,查看调用堆栈及变量、设置监视、计算变量值、 查看实际 HTML DOM等。
监视代码覆盖率
借助 GoLand,您还可以监控有多少代码被 Jest 测试覆盖。 GoLand 会在专用的 覆盖率 工具窗口中显示此统计信息,并在编辑器与 项目 工具窗口中以可视方式标记已覆盖和未覆盖的代码行 Alt+1。
运行带覆盖率的测试
创建一个如上所述的 Jest 运行/调试配置 as described above。
从主工具栏的列表中选择 Jest 运行/调试配置,然后单击列表右侧的
。
或者,也可以直接从编辑器中以覆盖方式快速运行某个套件或测试:单击边缘的
或
,并从列表中选择 Run <test_name> with Coverage。

在 Coverage 工具窗口中监控代码覆盖率。 报告显示有多少文件经过测试覆盖,以及这些文件中被覆盖代码行所占的百分比。 您可以通过报告跳转至文件,查看哪些行已被覆盖(标记为绿色),哪些行未被覆盖(标记为红色):

在 Docker 容器中的 Node.js 中运行 Jest 测试
借助 GoLand,您可以像在本地一样在 Docker 容器中运行 Jest 测试。
开始之前
在 设置 | 插件 页的 Marketplace 选项卡中安装 Node.js 与 Node.js Remote Interpreter 插件,如 从 JetBrains Marketplace 安装插件 中所述。
下载、安装并配置 Docker ,具体操作请参见 Docker
在 Docker 中配置 Node.js 远程解释器 或通过 Docker Compose 配置,并 将其设置为项目默认解释器。 还请确保与此远程解释器相关联的包管理器被 设置为项目默认值。
打开 package.json ,确认在
devDependencies部分中列出了 Jest:{ "name": "node-express", "version": "0.0.0", "private": true, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "morgan": "~1.9.1", "pug": "^3.0.2" }, "devDependencies": { "eslint": "^8.1.0", "http-server": "^14.0.0", "jest": "^27.3.1" } }在编辑器中任意位置右键单击并从上下文菜单中选择 Run '<package manager> install'。