Javascript Jest是否接受console.log语句?有没有办法改变这一点?

Javascript Jest是否接受console.log语句?有没有办法改变这一点?,javascript,jestjs,Javascript,Jestjs,Jest是否吞下控制台.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"? 我关心的主要原因是我在写一些异步的之前

Jest是否吞下
控制台.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"?

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

问题是我使用的是
jest--forceExit
。Jest的日志记录模型保存所有日志,并在以后将其吐出<代码>--forceExit导致进程在到达吐出日志点之前退出。

这似乎是一个错误

对于节点10.7.0和JEST23.4.1,在Jest配置()中添加
verbose:false
,对我来说很有效

编辑

现在我已经转到JEST23.6,根据Tamlyn的回答,我还需要将
TERM=dumb
作为环境变量传递

更新:应修复此问题

--watch
模式下影响测试的另一个部分解决方案是将
TERM=dumb
作为环境变量传递

TERM=dumb jest --watch

这有一个小代价,因为它不再在每次测试运行之前清除控制台,因此您必须滚动查看结果。

我找到了一个解决办法,尽管遗憾的是,无论是
TERM=dumb
,还是
verbose:false
还是升级到版本24都不起作用(我使用的是24.9)。只要监视控制台,就可以看到结果。用以下方法设置它:

const consoleSpy=jest.spyOn(控制台,'log')

然后在运行测试后使用以下命令查看调用:

consoleSpy.mock.calls[0][0]
尝试将
--verbose
添加到Jest参数中


这对我很有效。

我没有使用
--forceExit
=/有什么建议吗?我没有使用
forceExit
设置,我仍然看到jest swallow控制台语句。不确定你们都在哪个版本的节点上,但我有相同的问题,这似乎是节点7.3上的已知问题。使用
--bail,-b
选项也会发生有趣的查找,谢谢!作为删除forceExit的替代方法,您还可以使用类似于
wait new Promise(resolve=>setTimeout(resolve,100))
(只要您在支持的节点版本上使用异步函数,即)
--useStderr
为我的版本
v22.4.2
工作,这是否回答了您的问题?