console.log语句在Jest中不输出任何内容。昨天还挺管用的,今天突然就不管用了。我没有对我的配置做任何更改,也没有安装任何更新。

我没有使用——forceExit选项。仍然看到这个问题。


当前回答

这对我来说很管用:开玩笑——废话连篇

其他回答

在之前的回复中尝试了一些配置选项后,使用console.debug()而不是console.log()可以工作。

这是一个相当古老的问题,至今仍没有公认的答案。然而,没有一个建议的解决方案对我有效(设置像-静音-verbose等)。主要问题是Jest更改了全局控制台对象。因此,最简单的解决方案是不使用全局控制台对象。

相反,从控制台模块导入专用的日志函数并使用它们:

import { error } from "console";

error("This is an error");

就这么简单。

尝试了关于jest配置设置的建议,但无济于事。相反,在我的案例中,问题似乎与不等待异步代码有关:

test("test", async () => {
  console.log("Does output")

  new Promise(resolve => {
    // some expectation depending on async code
    setTimeout(() => resolve(console.log("Does not output")) , 1)
  })
})

相反,等待promise会输出async日志:

test("test", async () => {
  console.log("Does output")

  await new Promise(resolve => {
    // some expectation depending on async code
    setTimeout(() => resolve(console.log("Does output")) , 1)
  })
})

可能相关背景: https://github.com/facebook/jest/issues/2441

还要确保你的笑话配置没有silent: true。就我而言,我没有意识到其他人已经将其添加到我们的配置中。

我在配置选项列表中没有看到它,但是这里记录了命令行标志。

在我的例子中,问题是从编译版本(在dist文件夹中)而不是从src文件夹中导入函数。因此它使用的是旧版本。所以重建项目和/或从src导入解决了我的问题。