我的结构为
myObject={
Items:[
{
namePizza:{}
quantity: int
}
{
namePizza:{}
quantity: int
}
]
}
如果尝试console.log(myObject) Karma always return LOG:{Items:[]}
我不明白为什么会这样。
答案 0 :(得分:1)
普通console.log
会显示javascript对象的内部内容
> console.log({1,2})
> Object { 1, 2 }
但为什么通过业力调用console.log
的行为有所不同!
深入研究业力代码; Karma修改原始console
以提取消息并向每个日志添加元数据。因此,为了拥有一个安全的记录器并能够将作为参数提供给它们的所有内容记录下来,这些库stringify
将您传递给记录器的数据。
以下是业力记录器中正在发生的事情:
values.push(this.stringify(args[i], 3))
如您所见,他们有自己的记录器实现。
修改后的记录器针对您发送的数据调用stringify
。
您可以在此处查看“字符串化”所在的业力记录器:https://github.com/karma-runner/karma/blob/master/context/karma.js#L16
实际上,大多数测试运行器或日志记录传输(例如ravenJS for sentry)都会这样做。
解决这个问题;在致电JSON.stringify
console.log
包裹您的对象
请注意JSON.stringify
不适用于Sets
或Maps
及其weak
对应方。对于那些你必须打电话给.values()
以使记录器正常工作的人!