@@ -48,11 +48,14 @@ public async Task GetOrCreate_Ok()
4848 [ Fact ]
4949 public async Task ConnectAsync_Timeout ( )
5050 {
51- var client = CreateClient ( ) ;
52- client . Options . ConnectTimeout = 1 ;
51+ var client = CreateClient ( builder =>
52+ {
53+ // 增加发送报错 MockSocket
54+ builder . AddTransient < ISocketClientProvider , MockConnectTimeoutSocketProvider > ( ) ;
55+ } ) ;
56+ client . Options . ConnectTimeout = 10 ;
5357
5458 var connect = await client . ConnectAsync ( "localhost" , 9999 ) ;
55- await Task . Delay ( 5 ) ;
5659 Assert . False ( connect ) ;
5760 }
5861
@@ -703,6 +706,35 @@ public ValueTask<bool> SendAsync(ReadOnlyMemory<byte> data, CancellationToken to
703706 }
704707 }
705708
709+ class MockConnectTimeoutSocketProvider : ISocketClientProvider
710+ {
711+ public bool IsConnected { get ; private set ; }
712+
713+ public IPEndPoint LocalEndPoint { get ; set ; } = new IPEndPoint ( IPAddress . Any , 0 ) ;
714+
715+ public ValueTask CloseAsync ( )
716+ {
717+ return ValueTask . CompletedTask ;
718+ }
719+
720+ public async ValueTask < bool > ConnectAsync ( IPEndPoint endPoint , CancellationToken token = default )
721+ {
722+ await Task . Delay ( 1000 , token ) ;
723+ IsConnected = false ;
724+ return false ;
725+ }
726+
727+ public ValueTask < int > ReceiveAsync ( Memory < byte > buffer , CancellationToken token = default )
728+ {
729+ return ValueTask . FromResult ( 0 ) ;
730+ }
731+
732+ public ValueTask < bool > SendAsync ( ReadOnlyMemory < byte > data , CancellationToken token = default )
733+ {
734+ return ValueTask . FromResult ( true ) ;
735+ }
736+ }
737+
706738 class MockSendTimeoutSocketProvider : ISocketClientProvider
707739 {
708740 public bool IsConnected { get ; private set ; }
0 commit comments