@@ -466,12 +466,21 @@ public async Task ReloadsOnConfigurationChangeByDefault()
466466 new KeyValuePair < string , string > ( "Endpoints:B:Url" , "http://*:5001" ) ,
467467 } ) . Build ( ) ;
468468
469- Action changeCallback = null ;
469+ Func < Task > changeCallback = null ;
470+ TaskCompletionSource < object > changeCallbackRegisteredTcs = null ;
470471
471472 var mockChangeToken = new Mock < IChangeToken > ( ) ;
472473 mockChangeToken . Setup ( t => t . RegisterChangeCallback ( It . IsAny < Action < object > > ( ) , It . IsAny < object > ( ) ) ) . Returns < Action < object > , object > ( ( callback , state ) =>
473474 {
474- changeCallback = ( ) => callback ( state ) ;
475+ changeCallbackRegisteredTcs ? . SetResult ( null ) ;
476+
477+ changeCallback = ( ) =>
478+ {
479+ changeCallbackRegisteredTcs = new TaskCompletionSource < object > ( TaskCreationOptions . RunContinuationsAsynchronously ) ;
480+ callback ( state ) ;
481+ return changeCallbackRegisteredTcs . Task ;
482+ } ;
483+
475484 return Mock . Of < IDisposable > ( ) ;
476485 } ) ;
477486
@@ -505,7 +514,8 @@ public async Task ReloadsOnConfigurationChangeByDefault()
505514 . Setup ( transport => transport . AcceptAsync ( It . IsAny < CancellationToken > ( ) ) )
506515 . Returns ( new ValueTask < ConnectionContext > ( result : null ) ) ;
507516 mockTransport
508- . Setup ( transport => transport . EndPoint ) . Returns ( e ) ;
517+ . Setup ( transport => transport . EndPoint )
518+ . Returns ( e ) ;
509519
510520 mockTransports . Add ( mockTransport ) ;
511521
@@ -536,7 +546,7 @@ public async Task ReloadsOnConfigurationChangeByDefault()
536546 new KeyValuePair < string , string > ( "Endpoints:C:Url" , "http://*:5003" ) ,
537547 } ) . Build ( ) ;
538548
539- changeCallback ( ) ;
549+ await changeCallback ( ) . DefaultTimeout ( ) ;
540550
541551 mockTransportFactory . Verify ( f => f . BindAsync ( new IPEndPoint ( IPAddress . IPv6Any , 5000 ) , It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
542552 mockTransportFactory . Verify ( f => f . BindAsync ( new IPEndPoint ( IPAddress . IPv6Any , 5001 ) , It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
@@ -564,7 +574,7 @@ public async Task ReloadsOnConfigurationChangeByDefault()
564574 new KeyValuePair < string , string > ( "Endpoints:C:Url" , "https://*:5003" ) ,
565575 } ) . Build ( ) ;
566576
567- changeCallback ( ) ;
577+ await changeCallback ( ) . DefaultTimeout ( ) ;
568578
569579 mockTransportFactory . Verify ( f => f . BindAsync ( new IPEndPoint ( IPAddress . IPv6Any , 5000 ) , It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
570580 mockTransportFactory . Verify ( f => f . BindAsync ( new IPEndPoint ( IPAddress . IPv6Any , 5001 ) , It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
0 commit comments