【问题标题】:How do you debug Jest Tests?你如何调试 Jest 测试?
【发布时间】:2016-01-19 18:12:58
【问题描述】:

我找不到任何有关调试使用 Jest 编写的单元测试的信息。

如何调试 Jest 测试?

【问题讨论】:

  • 我知道这个帖子已经过时了。但是,我想添加一个可能有用的更新。现在存在一个简单称为Jest 的VSC 扩展。它在处理.test.js 文件时添加了实时反馈。希望这会有所帮助。

标签: typescript unit-testing debugging jestjs vscode-debugger


【解决方案1】:

Jest 测试不需要Chrome

我找到的最简单的解决方案是使用 VS Code JavaScript Debug Terminal

它可以与 Typescript 和 Nrvl.Nx 开箱即用的工作空间一起使用。

  1. 打开命令面板并启动Debug: JavaScript Debug Terminal:

  1. 在该终端中以 Watch 模式运行测试 npm test --watch
  2. 在文件中设置断点。
  3. 对要调试的文件进行任何更改并保存。
  4. watch 将对修改后的文件运行 Jest 测试。

当您想缩小 --watch 运行的文件数量时,在终端中按p 并输入一个模式,该模式只是您要测试的文件名的一部分,然后按 [Enter]

要将其限制为文件中的单个测试 - 以 f 为焦点,因此将其 (...) 更改为 fit(...)

【讨论】:

  • 完美..这应该是答案
  • 我不得不使用npm test -- --watch,否则完美答案!
【解决方案2】:

仅当只有一个项目时,添加 jest 配置才有效。但是,如果它自己的文件夹中有多个项目(即 rootfolder/project1、rootfolder/project2),则在测试文件或被测文件中运行带有断点的“jest --watchAll --runInBand --coverage”会很好选项

【讨论】:

    【解决方案3】:

    截至 2021 年,请查看 Jest 文档中的 Debugging in VS Code。将下面的 configurations 添加到您的 .vscode/launch.json 文件中。

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "Debug Jest Tests",
          "type": "node",
          "request": "launch",
          "runtimeArgs": [
            "--inspect-brk",
            "${workspaceRoot}/node_modules/jest/bin/jest.js",
            "--runInBand"
          ],
          "console": "integratedTerminal",
          "internalConsoleOptions": "neverOpen",
          "port": 9229
        }
      ]
    }
    

    【讨论】:

      【解决方案4】:

      我在7 ways to debug Jest tests in terminal 上写了一篇博文。这是最快的方法。

      您可以安装 ndb,这是一种改进的 Node.js 调试体验,由 Chrome DevTools 启用,带有

      npm install -g ndb
      

      然后就可以运行了:

      ndb npm run test
      

      这将为您打开 DevTools 并运行测试。

      或者你可以只输入一个命令:

      npx ndb npm run test
      

      你可以走了。但是请查看blog post,我在其中详细介绍了调试 Jest 测试的不同方法。

      【讨论】:

        【解决方案5】:

        @Yuci 的回答非常适合我。

        如果您在本地 Docker 容器中使用 jest,我只是对其进行精确化。您需要精确 --inspect-brk=0.0.0.0:9229

        node --inspect-brk=0.0.0.0:9229 <path to jest.js> --runInBand <path to your test file>
        

        【讨论】:

          【解决方案6】:

          您可以使用 Chrome DevTools 来调试 Jest 测试。

          首先,在您的项目中启动 Node 调试器:

          node --inspect-brk <path to jest.js> --runInBand <path to your test file>
          

          例子:

          • 如果您在本地安装 Jest(Linux 示例):

            node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand mymodule/test.js

          • 如果您全局安装 Jest(Windows 示例):

            node --inspect-brk "C:\\Program Files\\nodejs\\node_modules\\jest\\bin\\jest.js" --runInBand mymodule\\test.js

          然后,你可以打开谷歌Chrome浏览器,在地址栏输入:

          chrome://inspect
          

          现在单击“远程目标”下的检查链接以打开 Chrome DevTools。

          注意,你可能需要将源代码文件夹添加到chrome-devtools中的工作区,这样才能设置断点。

          现在你可以按 F8 开始调试了。

          [仅供参考]

          • 我的节点版本:v10.11.0
          • 我的笑话版本:23.6.0
          • 我的谷歌浏览器版本:71.0.3578.98

          [更新] 关于在 chrome-devtools 中将源代码文件夹添加到工作区的步骤(根据 Sam 的要求),如下所示:

          然后你可以打开你的脚本文件并设置断点:

          你会发现简单的demo project on my GitHub repo

          【讨论】:

          • 嗨@Yuci,你能解释一下如何在chrome-devtools中将源代码文件夹添加到工作区吗?
          • @SamKahChiin,请参阅我在 chrome-devtools 中将源代码文件夹添加到工作区的更新
          【解决方案7】:

          这是我在 VSCode 中调试 Jest 的基本配置,添加到 settings.json 中的启动配置

          "launch" : {
            "configurations": [
              {
                "type": "node",
                "request": "launch",
                "name": "Jest",
                "program": "${workspaceRoot}/node_modules/jest/bin/jest.js",
                "args": [
                    "-i"
                ],
                 "skipFiles": [
                  "<node_internals>/**/*.js", "node_modules",
                ]
              }
            ],
          },
          

          【讨论】:

            【解决方案8】:

            运行

            node --debug-brk node_modules/.bin/jest
            

            在您的项目目录中。它应该启动node 进程暂停调试器的侦听(通常在端口 5858)。 Visual Studio Code 是一个不错的 node.js 图形调试器示例,可用于连接到侦听节点进程。

            【讨论】:

              【解决方案9】:

              对于任何寻求答案的人,您可以使用 node-inspector 调试 jest。然而,这是一个非常缓慢的过程(调试单个测试需要 2-5 分钟),并且在实际使用中并不是很有用。

              我还没有找到更好的方法来调试 Jest,但是我看到很多人做额外的工作来让 jasmine 或 mocha 与 react 组件一起工作。因此,在节点检查器实际可用之前,这可能是一个更可行的选择。

              【讨论】:

                猜你喜欢
                • 2020-02-17
                • 1970-01-01
                • 2019-04-21
                • 2019-12-28
                • 1970-01-01
                • 2019-11-15
                • 1970-01-01
                • 2013-04-19
                • 1970-01-01
                相关资源
                最近更新 更多