@@ -8,42 +8,47 @@ namespace UnitTest.Components;
88public class NetworkMonitorIndicatorTest : BootstrapBlazorTestBase
99{
1010 [ Fact ]
11- public async Task NetworkMonitorIndicator_Ok ( )
11+ public void NetworkMonitorIndicator_Ok ( )
1212 {
1313 var cut = Context . RenderComponent < NetworkMonitorIndicator > ( pb =>
1414 {
1515 pb . Add ( a => a . PopoverPlacement , Placement . Top ) ;
1616 } ) ;
1717
18- var com = cut . FindComponent < NetworkMonitor > ( ) ;
19- await cut . InvokeAsync ( ( ) => com . Instance . TriggerNetworkStateChanged ( new NetworkMonitorState
20- {
21- IsOnline = false ,
22- NetworkType = "4g" ,
23- Downlink = 10.0 ,
24- RTT = 50
25- } ) ) ;
26- Assert . DoesNotContain ( "offline" , cut . Markup ) ;
27-
28- await cut . InvokeAsync ( ( ) => com . Instance . TriggerOnlineStateChanged ( true ) ) ;
2918 Assert . DoesNotContain ( "offline" , cut . Markup ) ;
3019 }
3120
3221 [ Fact ]
33- public async Task NetworkMonitor_Ok ( )
22+ public async Task RegisterStateChangedCallback_Ok ( )
3423 {
35- NetworkMonitorState ? state = null ;
36- var cut = Context . RenderComponent < NetworkMonitor > ( pb =>
24+ var service = Context . Services . GetRequiredService < INetworkMonitorService > ( ) ;
25+ var cut = Context . RenderComponent < NetworkMonitorIndicator > ( pb =>
3726 {
38- pb . Add ( a => a . OnNetworkStateChanged , v =>
39- {
40- state = v ;
41- return Task . CompletedTask ;
42- } ) ;
27+ pb . Add ( a => a . PopoverPlacement , Placement . Top ) ;
4328 } ) ;
4429
45- await cut . InvokeAsync ( ( ) => cut . Instance . TriggerOnlineStateChanged ( false ) ) ;
46- Assert . NotNull ( state ) ;
47- Assert . False ( state . IsOnline ) ;
30+ // 测试 TriggerNetworkStateChanged 方法
31+ var innerServicePropertyInfo = cut . Instance . GetType ( ) . GetProperty ( "NetworkMonitorService" , System . Reflection . BindingFlags . Instance | System . Reflection . BindingFlags . NonPublic ) ;
32+ Assert . NotNull ( innerServicePropertyInfo ) ;
33+
34+ var innerService = innerServicePropertyInfo . GetValue ( cut . Instance ) ;
35+ Assert . NotNull ( innerService ) ;
36+
37+ var methodInfo = innerService . GetType ( ) . GetMethod ( "TriggerNetworkStateChanged" ) ;
38+ Assert . NotNull ( methodInfo ) ;
39+
40+ var result = methodInfo . Invoke ( service , [ new NetworkMonitorState ( ) { Downlink = 10 , RTT = 100 , NetworkType = "4g" } ] ) ;
41+ if ( result is Task task )
42+ {
43+ await task ;
44+ }
45+
46+ // 测试重复注册回调
47+ var callback = new Func < NetworkMonitorState , Task > ( state =>
48+ {
49+ return Task . CompletedTask ;
50+ } ) ;
51+ await service . RegisterStateChangedCallback ( cut . Instance , callback ) ;
52+ await service . RegisterStateChangedCallback ( cut . Instance , callback ) ;
4853 }
4954}
0 commit comments