你如何调试Jest测试?

时间:2015-10-20 22:02:45

标签: unit-testing debugging jestjs

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

如何调试Jest测试?

7 个答案:

答案 0 :(得分:7)

笑话测试不需要Chrome。这就是使用Jest代替其他测试跑步者的全部要点。

我发现最简单的解决方案是使用 VS代码 JavaScript Debug Terminal

它可以与Typescript和Nrvl.Nx工作区一起使用。

  1. 打开JavaScript Debug Terminal

enter image description here

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

如果要缩小--watch运行的文件数,请在终端中按p,然后输入仅是您要测试的文件名一部分的模式,然后按{ {1}}

要将其限制为文件中的单个测试-将其聚焦于f,因此将[Enter]更改为it(...)

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

我在 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 测试的不同方法。

答案 3 :(得分:0)

运行

import Data.Optional

newtype LogLevel = LogLevel { getLogLevel :: Char } 

qLog' :: Char -> String -> IO ()
qLog' "I" msg = infoM "" msg
qLog' "D" msg = debugM "" msg
qLog' "W" msg = warningM "" msg
qLog' "E" msg = errorM "" msg
qLog' _ msg = infoM "" msg

qLog5 :: (Optional LogLevel) -> String -> IO ()
qLog5 (Specific l) msg = qLog' (getLogLevel l) msg 
qLog5 (Default) msg = qLog' "I" msg


<interactive>:251:7-9: error:
    • Couldn't match expected type ‘Char’ with actual type ‘[Char]’
    • In the pattern: "

在项目目录中。它应该启动node --debug-brk node_modules/.bin/jest 进程暂停监听(通常在端口5858)以获得调试器。 Visual Studio Code是node.js的一个漂亮的图形调试器的示例,可用于连接到侦听节点进程。

答案 4 :(得分:0)

您可以使用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

然后,您可以打开Goog​​le Chrome浏览器,然后在地址栏中输入:

chrome://inspect

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

请注意,您可能需要将源代码文件夹添加到chrome-devtools中的工作区中,以便能够设置断点。

现在您可以按F8键开始调试。

[FYI]

  • 我的节点版本:v10.11.0
  • 我的Jest版本:23.6.0
  • 我的Google Chrome浏览器版本:71.0.3578.98

答案 5 :(得分:0)

这是我在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",
      ]
    }
  ],
},

答案 6 :(得分:0)

@Yuci的答案对我来说很完美。

如果您在本地Docker容器中使用笑话,我只是在规定。您需要精确-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>