console.log语句在Jest中不输出任何内容。昨天还挺管用的,今天突然就不管用了。我没有对我的配置做任何更改,也没有安装任何更新。
我没有使用——forceExit选项。仍然看到这个问题。
console.log语句在Jest中不输出任何内容。昨天还挺管用的,今天突然就不管用了。我没有对我的配置做任何更改,也没有安装任何更新。
我没有使用——forceExit选项。仍然看到这个问题。
当前回答
这是一个相当古老的问题,至今仍没有公认的答案。然而,没有一个建议的解决方案对我有效(设置像-静音-verbose等)。主要问题是Jest更改了全局控制台对象。因此,最简单的解决方案是不使用全局控制台对象。
相反,从控制台模块导入专用的日志函数并使用它们:
import { error } from "console";
error("This is an error");
就这么简单。
其他回答
尝试使用console.debug()代替。
在测试函数中运行console.debug('Message here', yourValueHere),它应该在运行测试脚本时显示在控制台输出中。您可以使用Ctrl+F验证它是否工作,并在标准输出中找到Message。
这是在控制台中显示输出的技巧,虽然这不是一个关于如何使用console.log的答案,我理解。
我运行@test -library/jest-dom和jest-junit 12.0.0作为开发依赖。 joke -junit的最小配置为
"jest-junit": {
"usePathForSuiteName": "true"
},
在package.json。这主要用于配置覆盖率报告。 Jest是这样配置的:
"jest": {
"testMatch": [
"**/__tests__/**/*.[jt]s?(x)",
"**/?(*.)+(spec|test).[jt]s?(x)",
"!**/utilities.ts",
],
在我的情况下,这个问题是由[只有]旗帜在: It.only()或test。(“文本”,()= > {})
根据https://github.com/facebook/jest/issues/2441上的评论,
尝试在package.json的jest选项中设置verbose: false(或删除它)。
将我的文件从index.spec.js重命名为index.test.js。
尝试了关于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