Tag: 标准错误

在摩卡testing过程中将stdout和stderr静音

我会通过承认我可能正在做一些我不应该做的事情来做序。 但是既然我已经深深的了解了,我也可以理解为什么事情会这样发生。 我正在使用摩卡来testing一些Node.js代码。 此代码使用Winston日志库,它直接调用process.stdout.write()和process.stderr.write() ( source )。 它运作良好; 我对这种行为没有抱怨。 但是,当我对这段代码进行unit testing的时候,Mochatesting运行器的输出偶尔会穿插一些日志输出行,这在一些记者( dot , bdd )中是丑陋的,而在其他记者( bdd )中是彻头彻尾的无效的。 我想在不修改或inheritanceWinston的情况下阻止这个输出,而且我想避免修改应用程序本身,如果我可以避免的话。 我到达的是一组实用函数,它们可以用一个无操作函数暂时replaceNode的内build函数,反之亦然: var stdout_write = process.stdout._write, stderr_write = process.stderr._write; function mute() { process.stderr._write = process.stdout._write = function(chunk, encoding, callback) { callback(); }; } function unmute() { process.stdout._write = stdout_write; process.stderr._write = stderr_write; } 在各种testing规范中,我直接在产生不需要的输出的任何调用或断言之前调用了mute() ,并在之后直接unmute() 。 这感觉有点不好意思,但是工作起来 – […]