Skip to content

Commit a03b0d7

Browse files
committed
test: 更新单元测试
1 parent ab14b19 commit a03b0d7

File tree

2 files changed

+53
-23
lines changed

2 files changed

+53
-23
lines changed

test/UnitTest/Components/NetworkMonitorIndicatorTest.cs

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,42 +8,47 @@ namespace UnitTest.Components;
88
public 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
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the Apache 2.0 License
3+
// See the LICENSE file in the project root for more information.
4+
// Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone
5+
6+
namespace UnitTest.Services;
7+
8+
public class DefaultNetworkMonitorServiceTest : BootstrapBlazorTestBase
9+
{
10+
[Fact]
11+
public async Task GetNetworkMonitorState_Ok()
12+
{
13+
Context.JSInterop.Setup<NetworkMonitorState>("getNetworkInfo", matcher => true).SetResult(new NetworkMonitorState
14+
{
15+
NetworkType = "4g",
16+
Downlink = 10,
17+
RTT = 100
18+
});
19+
var service = Context.Services.GetRequiredService<INetworkMonitorService>();
20+
var state = await service.GetNetworkMonitorState(CancellationToken.None);
21+
Assert.Equal("4g", state.NetworkType);
22+
Assert.Equal(10, state.Downlink);
23+
Assert.Equal(100, state.RTT);
24+
}
25+
}

0 commit comments

Comments
 (0)