Hin*_*ood 41 console.log jestjs
console.log语句在Jest中根本没有输出任何内容.昨天这对我有用,突然之间,它今天不起作用了.我对配置进行了零更改,但没有安装任何更新.
我没有使用该--forceExit选项.仍然看到这个问题.
Mik*_*hke 101
这是一个相当老的问题,但仍然没有公认的答案。但是,建议的解决方案都不适合我(诸如 --silent --verbose 等设置)。主要问题是 Jest 更改了全局console对象。因此,最简单的解决方案是不使用全局console对象。
相反,从控制台模块导入专用日志函数并使用这些函数:
import { error } from "console";
error("This is an error");
Run Code Online (Sandbox Code Playgroud)
就这么简单。
Oux*_* Hu 53
Jest 默认禁止控制台日志消息。为了显示控制台日志消息,在命令行中将silent选项设置为false
--silent=false 在命令行中设置:
npm run test -- --silent=false
小智 36
根据https://github.com/facebook/jest/issues/2441上的评论,
尝试在package.json中的jest选项中设置verbose:false(或删除它).
Erk*_*nen 33
尝试使用console.debug()替代。
在测试函数内运行console.debug('Message here', yourValueHere),运行测试脚本时它应该显示在控制台输出中。您可以使用标准输出中的MessageCtrl+F来验证它是否有效。
这确实可以在控制台中显示输出,但它并不是如何使用的答案console.log我所理解的如何使用的答案。
我正在运行@testing-library/jest-dom并jest-junit 12.0.0作为 devDependency。
jest-junit最低配置为
"jest-junit": {
"usePathForSuiteName": "true"
},
Run Code Online (Sandbox Code Playgroud)
在package.json。这主要是配置覆盖率报告。jest 的配置如下:
"jest": {
"testMatch": [
"**/__tests__/**/*.[jt]s?(x)",
"**/?(*.)+(spec|test).[jt]s?(x)",
"!**/utilities.ts",
],
Run Code Online (Sandbox Code Playgroud)
Dav*_*han 24
尝试同时使用这两个选项: - watch --verbose false
Isa*_*aac 21
日志记录未打印的潜在原因之一是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,
};
Run Code Online (Sandbox Code Playgroud)
// 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}"
]
},
Run Code Online (Sandbox Code Playgroud)
如果您希望禁用此console.log功能,则通常会使用此选项jest
根据 v27 文档, silent这就是您想要的。verbose false(默认)阻止 Jest 输出层次结构中每个测试的结果,而 silent true(默认)将:
防止测试通过控制台打印消息。
npx jest --silent false如果您想使用 CLI 中的该选项运行 Jest,请使用。刚刚对此进行了测试console.log,它按预期工作。
就我而言,问题是由 [only] 标志引起的:
it.only()或test.only('some text',()=>{})
尝试了有关笑话配置设置的建议,但无济于事。相反,就我而言,问题似乎与不等待异步代码有关:
test("test", async () => {
console.log("Does output")
new Promise(resolve => {
// some expectation depending on async code
setTimeout(() => resolve(console.log("Does not output")) , 1)
})
})
Run Code Online (Sandbox Code Playgroud)
相反,等待承诺确实会输出异步日志:
test("test", async () => {
console.log("Does output")
await new Promise(resolve => {
// some expectation depending on async code
setTimeout(() => resolve(console.log("Does output")) , 1)
})
})
Run Code Online (Sandbox Code Playgroud)
可能相关的背景: https://github.com/facebook/jest/issues/2441
| 归档时间: |
|
| 查看次数: |
34503 次 |
| 最近记录: |