我希望测试我的流程,确保它对 EPIPE
错误具有弹性,因为我们在生产环境中看到了这些错误,除了缺少一些日志记录外,它们似乎并没有任何问题。
if (process.env.TESTFAIL != null) {
setTimeout(function() {
throw new Error('EPIPE');
}, 1000);
}
然而那看起来不太一样,EPIPE
错误看起来像:
Error: write EPIPE at errnoException (net.js:770:11)
我也尝试过使用throw new Error({code: 'EPIPE', errno: -3})
等方式,但是效果不太一样。
有没有一种方法可以从Node.js对象中获取代码/消息并抛出系统错误?
SIGINT
或SIGKILL
)终止外部进程。与大多数单元测试相比,这是一件丑陋/复杂的事情,并且可能属于集成测试范畴。但这样做对于测试EPIPE
处理既必要又充分。像Unixyes
(它发出无限序列)这样的实用程序可以成为此类测试的有用外部工具。 - Jonathan Eunice