私がテストからやろうとしているのは、socket.on('error',() => {...})
で捕まえるべきETIMEDOUTをシミュレートすることです。私が使用しているサードパーティ製のTCPサーバーを使った実際の言葉では、ETIMEDOUTは常にerror
イベントによってキャッチされます。私のテストでもこの状況を模倣したいと思います。 tls
ドキュメントを通って行く、この目的のために使用することができる唯一の候補者がsocket.setTimeout
ですが、それは私がそれを期待する方法は動作しません:ノードtls、シミュレートソケットETIMEDOUT
describe('TCP timeout',() => {
const TIMEOUT_AFTER_IN_MILLISECONDS = 1
const socket = getActiveSocketFromSomewhere()
it('should simulate timeout',() => {
socket.setTimeout(TIMEOUT_AFTER_IN_MILLISECONDS,() => {
console.log('are we here')
})
/**
* This will trigger socket communication
* with dummy TCP server where socket from
* above will be used
*/
return something()
...
})
})
コンソールから私は14ms
のための答えを待っているとことをしていることがわかりますsetTimeout
に提供されるコールバックが実行されましたが、私はTCPサーバからの応答を受信していることがわかります後:
are we here
{ result: 'success', ... }
socket.end()のdoesntネットソケットに存在し)、それはsocket.close(あるNode.jsの – wetlip