如何使用Jest使用节点debuggingcli?

我怎样才能用Jest使用简单的节点cli / repldebugging器?

Jest文档使用节点检查器 ,但是从6.3节开始已经过时/不推荐使用。 我在节点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

我添加了 – 警告指定的,但即使如此,执行不会停止在我的debugger语句在Chrome开发工具。

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

我发现以下命令的作品:

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

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

 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 Debugger和使用节点的内置 debugging器 检查variables所描述的那样?

所有这些步骤的组合在阅读文档时并不明显,所以我希望这个答案能够帮助某人更快地完成这个步骤。

在节点v8.4中,代码中的debugger关键字针对VM上下文是固定的。 参考这个git评论 。

1. 在你的Jest代码中inputdebugger关键字

 describe('Testcase definition', () => { it('should be defined with subobjects', () => { debugger; // <-- This keyword breaks on Chrome inspect expect(true).toBe(true); }); }); 
  1. 运行命令:

    节点–inspect-brk –inspect ./node_modules/.bin/jest -i tests / mytest.test.js

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