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