问题 Jest是否吞下console.log语句?有没有办法改变这个?


Jest吞咽了吗? console.log 输出?

// __tests__/log.test.js

it('logs', () => {
  console.log('hey') // expect to see "hey" printed in terminal
})

// terminal output
$ jest --forceExit
PASS  __tests__/log.test.js
✓ logs (1ms) # where's "hey"?

我关心的主要原因是我正在写一些异步 beforeAll 和 afterAll 东西,我想使用console.log语句来调试事件的顺序。


6853
2017-12-12 02:23


起源



答案:


问题是我正在使用 jest --forceExit。 Jest的日志记录模型会保存所有日志并在以后将其吐出。 --forceExit 导致进程在到达spit-out-logs点之前保释。


7
2017-12-12 03:59



我没有使用这个问题 --forceExit。 = /有什么建议吗? - thisissami
我没有使用 forceExit 设置,我仍然看到jest吞下控制台语句。 - Matt S
不确定你所使用的节点版本是什么,但我有同样的问题,它似乎是节点7.3上的一个已知问题。 github.com/facebook/jest/issues/2441 - Nick Cox
也发生在 --bail, -b 选项 - Yo Ludke
有意思的发现,谢谢!作为删除forceExit的替代方法,您还可以使用类似的方法跟踪console.log await new Promise( resolve => setTimeout( resolve, 100 ) ); (只要您在支持的节点版本上使用异步功能,即) - Tim Malone


答案:


问题是我正在使用 jest --forceExit。 Jest的日志记录模型会保存所有日志并在以后将其吐出。 --forceExit 导致进程在到达spit-out-logs点之前保释。


7
2017-12-12 03:59



我没有使用这个问题 --forceExit。 = /有什么建议吗? - thisissami
我没有使用 forceExit 设置,我仍然看到jest吞下控制台语句。 - Matt S
不确定你所使用的节点版本是什么,但我有同样的问题,它似乎是节点7.3上的一个已知问题。 github.com/facebook/jest/issues/2441 - Nick Cox
也发生在 --bail, -b 选项 - Yo Ludke
有意思的发现,谢谢!作为删除forceExit的替代方法,您还可以使用类似的方法跟踪console.log await new Promise( resolve => setTimeout( resolve, 100 ) ); (只要您在支持的节点版本上使用异步功能,即) - Tim Malone


这似乎是一个 持续的问题

使用Node 10.7.0和Jest 23.4.1,添加 verbose: false 到jest配置(根据这个建议)为我工作。


2
2017-07-20 21:11





另一个部分解决方案 目前的错误 影响测试 --watch 模式是通过 TERM=dumb 作为环境变量。

TERM=dumb jest --watch

这个价格很小,因为它不再在每次测试运行之前清除控制台,你必须滚动才能看到结果。


0
2017-10-03 10:46