【发布时间】:2020-01-08 22:42:38
【问题描述】:
我正在编写一些单元测试,我想在 net.Socket 实例上模拟连接丢失 (ECONNRESET) 作为测试之一。
最好的方法是什么?
谢谢
【问题讨论】:
标签: node.js unit-testing
我正在编写一些单元测试,我想在 net.Socket 实例上模拟连接丢失 (ECONNRESET) 作为测试之一。
最好的方法是什么?
谢谢
【问题讨论】:
标签: node.js unit-testing
我最后走的路是这样的:
client.end();
client.emit('error', new Error('ECONNRESET'));
这是我测试所需的全部内容
【讨论】:
对于这种情况,有一些更简单的解决方案:
socket.destroy(new Error('ECONNRESET'))
根据socket.destroy([exception])docs:
如果指定了异常,将发出一个“错误”事件,并且任何 该事件的侦听器将接收异常作为参数。
此外,end(服务器可能仍会发送一些数据)和destroy(确保此套接字上不再发生 I/O 活动)之间存在细微差别。对于ECONNRESET,后者将是最佳选择,因为此代码通常意味着突然的对等断开连接,并且会在后续写入时出错。
【讨论】: