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

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


当前回答

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

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

其他回答

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

Jest默认情况下抑制控制台日志消息。为了显示控制台日志消息,在命令行中将silent选项设置为false

在命令行设置——silent=false:

NPM运行测试-- --silent=false

根据https://github.com/facebook/jest/issues/2441上的评论,

尝试在package.json的jest选项中设置verbose: false(或删除它)。

日志记录不能打印的一个潜在原因是console.log被嘲笑了。如下所示

// jest-setup.js
global.console = {
  // eslint-disable-next-line no-undef
  log: jest.fn(), // console.log are ignored in tests
  // log: console.log,

  // Keep native behaviour for other methods, use those to print out things in your own tests, not `console.log`
  error: console.error,
  warn: console.warn,
  info: console.info,
  debug: console.debug,
};
// package.json
  "jest": {
    "preset": "react-native",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx",
      "json",
      "node"
    ],
    "setupFilesAfterEnv": [
      "@testing-library/jest-native/extend-expect",
      "<rootDir>/src/config/jest-setup.js"
    ],
    "testMatch": [
      "<rootDir>/src/**/__tests__/**/*.test.{ts,tsx}"
    ]
  },

如果你想禁用console.log,这是常用的

在我的案例中,问题是当需要模块时,在实际测试用例开始之前,日志就被记录了下来。从顶级导入更改为在测试用例中使用require解决了这个问题。