【问题标题】:How can I tell Jest not to suppress console output on failure?我如何告诉 Jest 不要在失败时抑制控制台输出?
【发布时间】:2022-12-03 07:49:30
【问题描述】:

似乎需要 --silent=false--verbose=false 的某种组合 to get console.log output from Jest。但是当我的测试失败(即抛出错误)时,这些选项似乎都无济于事(在 Jest 29.3 中):

test('console output', () => {
   console.log('this never prints')
   throw new Error('but why?!?') // or 'expect(true).toBe(false)'
})

为什么,哦,为什么,杰斯特,你要这样做吗?失败的测试正是我最需要控制台(即调试)输出的时候。

无论测试中的某些内容是否引发错误,我如何才能看到 console.log 输出?

【问题讨论】:

  • node_modules\.bin\jest 的身份运行测试是否可行?这为我显示了 console.log 输出。笑话 29.3,视窗。 package.json 可能有 --silent 标志,如链接问题中所述,这会阻止控制台输出。
  • jest 29.3 作品的全新环境 - see it here。您可能应该分享您的配置。

标签: javascript jestjs ts-jest


【解决方案1】:
// Jest configuration file (jest.config.js)
module.exports = {
errorOnDeprecated: true,
verbose: true,
forceExit: false,
};

errorOnDeprecated 选项设置为 true 时,将导致 Jest 在使用已弃用的功能时抛出错误。这将防止 Jest 抑制已弃用功能的控制台输出,并允许您查看测试运行的完整输出。

注意:我不太喜欢 Jest,因此如果您系统上的任何行为与我的不同,我概不负责。

【讨论】:

    【解决方案2】:

    默认情况下,当测试失败时,Jest 会抑制 console.log 语句的输出。这是为了防止测试输出被可能与故障无关的无关信息弄乱。

    要覆盖此行为并在测试失败时显示 console.log 语句的输出,您可以在运行 Jest 时使用 --verbose 或 --silent 命令行选项。 --verbose 选项将显示所有 console.log 语句的输出,无论测试是通过还是失败。 --silent 选项将抑制来自 console.log 语句的所有输出,包括测试通过时。

    要使用这些选项,您可以使用 --verbose 或 --silent 标志运行 Jest,如下所示:

    jest --verbose
    
    jest --silent
    

    例如,要在测试失败时查看 console.log 语句的输出,您可以使用 --verbose 标志运行 Jest,如下所示:

    jest --verbose test.js
    

    或者,如果您想抑制所有 console.log 输出,您可以使用 --silent 标志运行 Jest,如下所示:

    jest --silent test.js
    

    我希望这有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      相关资源
      最近更新 更多