在 * VS-Code * 中调试 * Jest * 测试时,只要启动调试器,断点就会移动几行。
我使用正式的recommended configuration和普通的JavaScript(而不是Babel)。
我认为这与源代码Map有关。在配置中设置"sourceMaps": false
使我的断点不再移动,而是将"真正的"源代码移动了几行。
- 最小示例:**
第一个
现在,如果您在const x = 15
处设置断点,您将看到它在调试会话期间转换为expect(funTest(5)).toBe(9)
。
- 所用软件**VS代码:1.27.0,无扩展;笑话:23.5.0;节点:8.10.0; Ubuntu Linux操作系统16.04
3条答案
按热度按时间iugsix8n1#
我自己找到了“解决方案”。添加一个.babelrc文件到您的根文件夹中,其中包含以下内容:
然后问题就解决了。
尽管我没有特别使用巴别塔,但VS Code多少会使用。
cngwdvgl2#
将以下内容添加到
launch.json
中的vscode-jest-tests
配置中:这对我和several other people都有效。
bgtovc5b3#
这是一个长期存在的问题,寻找解决方案会导致旧的或错误的答案,比如添加“disableOptimisticBP:true”,它已不再被支持。我甚至找不到一个说明它被删除以及原因的注解。
这里的主要问题显然是源代码Map。由于某些原因,生成的源代码Map与实际的TS代码不匹配。对我来说,甚至正常代码中的断点都不起作用(测试代码之外)。但在另一个项目中,我有一个工作的Mocha配置,这最终给我带来了一个解决方案。
你不需要
ts-jest
来调试!它是整个麻烦的罪魁祸首,它不仅让我浪费了几天时间,寻找解决方案。相反,让tsc
生成你的JS代码然后给Jest一个JS文件的路径,而不是TS文件。VS代码将自动找到sidecar源Map,并与您一起通过您的TS代码就好了。作为调试当前规范文件的启动配置,请使用:
这需要一个任务来运行TS编译器:
其在第一次测试调试运行时构建所有文件,然后监视TS文件中的任何改变,并立即重新编译那些改变。
现在,选择任意一个spec文件,设置一个断点(也可以在源代码中设置),然后开始调试。