如何在Jest中使用节点调试cli?

时间:2017-03-23 16:03:33

标签: node.js jestjs node-debugger babel-jest

如何在Jest中使用简单节点cli / repl调试器?

Jest documentation使用node-inspector,但从Node 6.3开始,它已过时/弃用。我在Node 7.7.4上尝试了推荐的命令:

node --debug-brk ./node_modules/.bin/jest --runInBand --no-cache [your_test_file]

但这只是挂在下面(假设在节点检查器上等待):

(node:13452) DeprecationWarning: node --debug is deprecated. Please use node --inspect instead. Debugger listening on 127.0.0.1:5858

我按照警告的指定添加了--inspect,但即使这样,执行也不会停留在Chrome DevTools中的debugger语句中。

对于一个非常简单的用例,这似乎过于复杂。

2 个答案:

答案 0 :(得分:2)

我发现以下命令有效:

node debug ./node_modules/.bin/jest --runInBand --no-cache [your_test_file]

......但有一些古怪的行为。当调试器第一次停止时,您将看到:

break in node_modules/jest/bin/jest.js:10
  8  */
  9
>10 'use strict';
 11
 12 require('jest-cli/bin/jest');
debug>

显然Jest总是注入这个断点,以便你有时间打开Chrome DevTools(在我们的情况下无关紧要,因为我们只会使用cli / repl)。

继续使用c超过此断点,经过一段时间后(当然没有任何迹象表明事情正在发生),您应该看到断点:

break in webpack/assets/react/components/presentation/Feed/Comments/Comment/commentSpec.jsx:12
 10     var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(_comment2.default, { loading: true }));
 11
>12     debugger;
 13     expect(wrapper.find(_button2.default)).to.have.length(1);
 14   });
 debug>

最后一个奇怪的事情是你需要输入repl来检查对象,如Node DebuggerInspecting variables using node's built-in debugger?

中所述

在阅读文档时,所有这些步骤的组合对我来说并不是很明显,所以我希望这个答案可以帮助人们更快地克服障碍。

答案 1 :(得分:1)

从节点v8.4开始,代码中的previous.title关键字对于VM上下文是固定的。请参阅this git comment

1. 在您的Jest代码中键入调试器关键字

debugger
  1. 要运行的命令:

      

    node --inspect-brk --inspect ./node_modules/.bin/jest -i tests / mytest.test.js

  2. 现在在Chrome上打开 chrome://inspect/#devices。瞧!