Console.log在Karma / Jasmine上无法正常工作

时间:2017-11-23 21:56:47

标签: javascript karma-jasmine

我的结构为

myObject={
   Items:[
   {
    namePizza:{}
    quantity: int
   }
   {
    namePizza:{}
    quantity: int
   }
  ]
}

如果尝试console.log(myObject) Karma always return LOG:{Items:[]}

我不明白为什么会这样。

1 个答案:

答案 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不适用于SetsMaps及其weak对应方。对于那些你必须打电话给.values()以使记录器正常工作的人!