我想将JSON.stringify()
' d对象打印到控制台,作为Mocha测试套件输出的一部分用于上下文。
当测试缩进时,我希望对象日志行向右缩进(例如,3-4个制表符空格),使它们在右describe()
组中可识别。
我如何通过console.log
或process.stdout.write
?
答案 0 :(得分:4)
如果仅用于console.log,您可能需要查找组,请在控制台上查看:
var obj = {
a : 1,
b : 2,
c: 3
}
console.log('Non-tabbed');
console.group();
console.log(JSON.stringify(obj, null, 2));
console.groupEnd();
console.log('Back to non-tabbed');

它不是本地的node.js,但它适用于浏览器。在npm上有一个可能适用的软件包。
这会将整个JSON字符串移动3个空格。它用新行打破JSON字符串,然后在每行3个空格上添加一个新字符串,它将保持每一行的移位。
var results = document.getElementById('results');
var obj = {
a: 5,
b: 3,
c: 4
};
var string = JSON.stringify(obj, null, 2);
var stringShifted = '';
string.split('\n').forEach(function(line){
stringShifted += ' ' + line + '\n';
});
console.log(string);
console.log(stringShifted);
results.innerHTML = 'Before : \n' + string;
results.innerHTML += '\n\nAfter : \n' + stringShifted;

<pre id="results"></pre>
&#13;
答案 1 :(得分:0)
您可以在JSON.stringify输出上添加一个简短的reg-ex替换,以获得您所追求的效果。
var myObject = _buildAnObject();
it("Should log my entire JSON.stringify indented", function(){
console.log("My log message: \n\t"
+ JSON.stringify(myObject, null, 2).replace(/\n\r?/g, '\n\t'));
assert(true);
});
我在codepen.io上添加了一个有效的mocha示例。