Car*_*ton 5 javascript testing typescript jestjs console.dir
我试图在 Jest 测试中显示错误,但它不会显示所有级别。
import util from 'util'
describe('Module', () => {
it('should show all levels WITHOUT util', () => {
const large = {
level1: {
level2: {
message: 'At level 2!',
level3: {
message: 'At level 3!',
level4: {
message: 'At level 4!',
level5: {
message: 'At level 5!',
},
},
},
},
},
}
console.dir(large, { depth: 5 })
})
it('should show all levels with util', () => {
const large = {
level1: {
level2: {
message: 'At level 2!',
level3: {
message: 'At level 3!',
level4: {
message: 'At level 4!',
level5: {
message: 'At level 5!',
},
},
},
},
},
}
console.dir(util.inspect(large, { depth: 5 }))
})
})
Run Code Online (Sandbox Code Playgroud)
这给了我以下结果
{ level1: { level2: { message: 'At level 2!', level3: [Object] } } } { depth: 5 }
{ level1:
{ level2:
{ message: 'At level 2!',
level3:
{ message: 'At level 3!',
level4:
{ message: 'At level 4!', level5: { message: 'At level 5!' } } } } } }
Run Code Online (Sandbox Code Playgroud)
我的印象是 console.dir 应该已经为我做到了这一点,但是我[Object]在深度 2 之后得到的第一个测试
我什至在 Jest 之外创建了一个简单的测试,它似乎按 console.dir 的预期工作,任何人都可以解释为什么会发生这种情况吗?Jest 是否会使用其自己的默认深度或其他内容覆盖 dir 的行为方式?
const large = {
level1: {
level2: {
message: 'At level 2!',
level3: {
message: 'At level 3!',
level4: {
message: 'At level 4!',
level5: {
message: 'At level 5!',
},
},
},
},
},
}
console.dir(large, { depth: 5 })
Run Code Online (Sandbox Code Playgroud)
结果是...
{ level1:
{ level2:
{ message: 'At level 2!',
level3:
{ message: 'At level 3!',
level4:
{ message: 'At level 4!', level5: { message: 'At level 5!' } } } } } }
Run Code Online (Sandbox Code Playgroud)
太棒了;在当前的 Jest 实现中,第二个参数console.dir(value, options)被忽略。
consoleJest通过自己的实现重新定义了全局。在BufferedConsole和中CustomConsole,您可能会发现该dir方法如下所示:
dir(firstArg: unknown, ...args: Array<unknown>): void {
this._log('dir', format(firstArg, ...args));
}
Run Code Online (Sandbox Code Playgroud)
很难找到该format函数的确切定义,但 Github 建议以下实现:
export const format = (value: unknown): string =>
typeof value === 'function'
? value.toString()
: prettyFormat(value, {min: true});
Run Code Online (Sandbox Code Playgroud)
prettyFormat有maxDepth一个选项在所有 3 个实现中都没有传递。
| 归档时间: |
|
| 查看次数: |
813 次 |
| 最近记录: |